public static PropertyTreeMetaObject Create(Type componentType)
        {
            if (componentType == null)
            {
                throw new ArgumentNullException("componentType");
            }

            if (componentType == typeof(Type))
            {
                return(new TypeMetaObject());
            }

            var ct = componentType.GetTypeInfo();

            if (ct.IsGenericType && ct.GetGenericTypeDefinition() == typeof(Template <>))
            {
                return(TemplateMetaObject.FromTemplateType(componentType));
            }

            if (componentType == typeof(ITemplate))
            {
                return(new UntypedToTypedMetaObject(typeof(ITemplate),
                                                    t => TemplateMetaObject.FromInstanceType(null, t.Single())));
            }

            return(new PreactivationMetaObject(componentType));
        }
        private TemplateMetaObject(TemplateMetaObject parent, Type componentType)
            : base(parent)
        {
            if (componentType.IsGenericType && componentType.GetGenericTypeDefinition() == typeof(ITemplate<>))
                throw new ArgumentException();

            this.componentType = componentType;
        }
Esempio n. 3
0
        private TemplateMetaObject(TemplateMetaObject parent, Type componentType) : base(parent)
        {
            if (typeof(ITemplate).GetTypeInfo().IsAssignableFrom(componentType))
            {
                // Can't be a "template of a template"
                throw new ArgumentException();
            }

            this.componentType = componentType;
        }
Esempio n. 4
0
 public static TemplateMetaObject FromInstanceType(TemplateMetaObject parent, Type componentType)
 {
     return(new TemplateMetaObject(parent, componentType));
 }
 public static TemplateMetaObject FromInstanceType(TemplateMetaObject parent, Type componentType)
 {
     return new TemplateMetaObject(parent, componentType);
 }