IKVM.Reflection.Type.IsAssignableFrom C# (CSharp) Method

IsAssignableFrom() public method

public IsAssignableFrom ( Type type ) : bool
type Type
return bool
        public bool IsAssignableFrom(Type type)
        {
            if (this.Equals(type))
            {
                return true;
            }
            else if (type == null)
            {
                return false;
            }
            else if (this.IsArray && type.IsArray)
            {
                if (this.GetArrayRank() != type.GetArrayRank())
                {
                    return false;
                }
                else if (this.__IsVector && !type.__IsVector)
                {
                    return false;
                }
                Type e1 = this.GetElementType();
                Type e2 = type.GetElementType();
                return e1.IsValueType == e2.IsValueType && e1.IsAssignableFrom(e2);
            }
            else if (this.IsSealed)
            {
                return false;
            }
            else if (this.IsInterface)
            {
                return Array.IndexOf(type.GetInterfaces(), this) != -1;
            }
            else if (type.IsInterface)
            {
                return this == this.Module.universe.System_Object;
            }
            else if (type.IsPointer)
            {
                return this == this.Module.universe.System_Object || this == this.Module.universe.System_ValueType;
            }
            else
            {
                return type.IsSubclassOf(this);
            }
        }

Usage Example

Example #1
0
        internal static bool IsAssignableFrom(Type target, Type type)
        {
#if WINRT
            return target.GetTypeInfo().IsAssignableFrom(type.GetTypeInfo());
#else
            return target.IsAssignableFrom(type);
#endif
        }
All Usage Examples Of IKVM.Reflection.Type::IsAssignableFrom