[Mono-dev] embedding C, typeof operator
Paolo Molaro
lupus at ximian.com
Wed Mar 22 13:35:43 EST 2006
On 03/22/06 vavra at software602.cz wrote:
> Hello,
> I'd like in C to find out wheter some C# class has some type.
> For example:
> class C is descendat of class B
> class B is descendat of class A
> I have instace ic of class C
> I'd to test wheter ic is type of A.
>
> Is there other way than using mono_class_get_parent?:
>
> MonoClass *parent=ic_klass;
> while (parent) {
> if (strcmp(mono_type_full_name(mono_class_get_type(parent)), "A") {
> printf("ic is typeof A");
> break;
> }
> parent = mono_class_get_parent(parent);
> }
Using string compares to compare types is wrong, both in C and in C#
code. With the embedding interface, you can loop with
mono_clasS_get_parent() and compare the MonoClass pointers directly, or
you can use the provided API:
gboolean mono_class_is_subclass_of (MonoClass* a, MonoClass *b, gboolean check_interfaces);
It will return TRUE if b is a supertype of a. You can just pass FALSE as
the last argument.
lupus
--
-----------------------------------------------------------------
lupus at debian.org debian/rules
lupus at ximian.com Monkeys do it better
More information about the Mono-devel-list
mailing list