Пример #1
0
            public bool IsAssignableFrom(IXamlIlType type)
            {
                if (!type.IsValueType &&
                    type == XamlIlPseudoType.Null)
                {
                    return(true);
                }
                if (type.IsValueType && type.GenericTypeDefinition?.FullName == "System.Nullable`1")
                {
                    return(true);
                }
                if (FullName == "System.Object" && type.IsInterface)
                {
                    return(true);
                }
                var baseType = type;

                while (baseType != null)
                {
                    if (baseType.Equals(this))
                    {
                        return(true);
                    }
                    baseType = baseType.BaseType;
                }

                if (IsInterface && type.GetAllInterfaces().Any(IsAssignableFrom))
                {
                    return(true);
                }
                return(false);
            }