예제 #1
0
 public PerspexXamlMember(string name,
     XamlType owner,
     IXamlTypeRepository xamlTypeRepository,
     ITypeFeatureProvider featureProvider)
     : base(name, owner, xamlTypeRepository, featureProvider)
 {
 }
예제 #2
0
 public PerspexXamlMember(string name,
                          XamlType owner,
                          IXamlTypeRepository xamlTypeRepository,
                          ITypeFeatureProvider featureProvider)
     : base(name, owner, xamlTypeRepository, featureProvider)
 {
 }
 public WpfXamlAttachableMember(string name,
                                MethodInfo getter,
                                MethodInfo setter,
                                IXamlTypeRepository xamlTypeRepository,
                                ITypeFeatureProvider typeFeatureProvider)
     : base(name, getter, setter, xamlTypeRepository, typeFeatureProvider)
 {
 }
예제 #4
0
        public XamlMember(string name, XamlType owner, IXamlTypeRepository mother, bool isAttachable)
            : this(name)
        {
            IsAttachable = isAttachable;
            DeclaringType = owner;

            Type = LookupType(name, owner, mother, isAttachable);
        }
예제 #5
0
 public PerspexXamlType(Type type,
                        IXamlTypeRepository typeRepository,
                        ITypeFactory typeFactory,
                        ITypeFeatureProvider featureProvider,
                        IPerspexPropertyBinder propertyBinder) : base(type, typeRepository, typeFactory, featureProvider)
 {
     _propertyBinder = propertyBinder;
 }
예제 #6
0
 public WpfXamlAttachableMember(string name,
     MethodInfo getter,
     MethodInfo setter,
     IXamlTypeRepository xamlTypeRepository,
     ITypeFeatureProvider typeFeatureProvider)
     : base(name, getter, setter, xamlTypeRepository, typeFeatureProvider)
 {
 }
예제 #7
0
        public XamlAttribute(UnboundAttribute unboundAttribute, XamlType type, IXamlTypeRepository typeContext)
        {
            Type = unboundAttribute.Type;
            Value = unboundAttribute.Value;
            Locator = unboundAttribute.Locator;

            Property = GetProperty(Locator, type, typeContext);
        }
예제 #8
0
        protected XamlType(Type type, IXamlTypeRepository typeRepository)
        {
            Guard.ThrowIfNull(type, nameof(type));
            Guard.ThrowIfNull(typeRepository, nameof(typeRepository));

            this.typeRepository = typeRepository;
            UnderlyingType = type;
            Name = type.Name;
        }
예제 #9
0
 public PerspexXamlMember(string name,
                          XamlType owner,
                          IXamlTypeRepository xamlTypeRepository,
                          ITypeFeatureProvider featureProvider,
                          IPerspexPropertyBinder propertyBinder)
     : base(name, owner, xamlTypeRepository, featureProvider)
 {
     _propertyBinder = propertyBinder;
 }
예제 #10
0
        private Type ResolveFromString(string typeLocator, IXamlTypeRepository typeRepository)
        {
            Guard.ThrowIfNull(typeLocator, nameof(typeLocator));

            var prefixAndType = typeLocator.Dicotomize(':');

            var xamlType = typeRepository.GetByPrefix(prefixAndType.Item1, prefixAndType.Item2);
            return xamlType.UnderlyingType;
        }
예제 #11
0
        public static XamlType Create(Type underlyingType,
                                      IXamlTypeRepository xamlTypeRepository,
                                      ITypeFactory typeFactory,
                                      ITypeFeatureProvider featureProvider)
        {
            Guard.ThrowIfNull(underlyingType, nameof(xamlTypeRepository));

            return(new XamlType(underlyingType, xamlTypeRepository, typeFactory, featureProvider));
        }
예제 #12
0
 public PerspexXamlType(Type type,
     IXamlTypeRepository typeRepository,
     ITypeFactory typeFactory,
     ITypeFeatureProvider featureProvider,
     IPerspexPropertyBinder propertyBinder)
     : base(type, typeRepository, typeFactory, featureProvider)
 {
     this.propertyBinder = propertyBinder;
 }
예제 #13
0
 protected MutableXamlMember(string name,
                             XamlType declaringType,
                             IXamlTypeRepository xamlTypeRepository,
                             ITypeFeatureProvider typeFeatureProvider) : base(name)
 {
     FeatureProvider = typeFeatureProvider;
     TypeRepository  = xamlTypeRepository;
     DeclaringType   = declaringType;
 }
예제 #14
0
 public PerspexXamlMember(string name,
     XamlType owner,
     IXamlTypeRepository xamlTypeRepository,
     ITypeFeatureProvider featureProvider,
     IPerspexPropertyBinder propertyBinder)
     : base(name, owner, xamlTypeRepository, featureProvider)
 {
     this.propertyBinder = propertyBinder;
 }
 public PerspexAttachableXamlMember(string name,
     XamlType owner,
     MethodInfo getter,
     MethodInfo setter,
     IXamlTypeRepository xamlTypeRepository,
     ITypeFeatureProvider featureProvider)
     : base(name, getter, setter, xamlTypeRepository, featureProvider)
 {
 }
예제 #16
0
        protected MutableXamlMember(string name, XamlType owner, IXamlTypeRepository xamlTypeRepository, ITypeFactory typeFactory)
            : base(name)
        {
            TypeRepository = xamlTypeRepository;
            TypeFactory = typeFactory;

            DeclaringType = owner;
            XamlType = LookupType();
        }
예제 #17
0
 public PerspexAttachableXamlMember(string name,
                                    XamlType owner,
                                    MethodInfo getter,
                                    MethodInfo setter,
                                    IXamlTypeRepository xamlTypeRepository,
                                    ITypeFeatureProvider featureProvider)
     : base(name, getter, setter, xamlTypeRepository, featureProvider)
 {
 }
예제 #18
0
 public AttachableXamlMember(string name,
                             MethodInfo getter,
                             MethodInfo setter,
                             IXamlTypeRepository xamlTypeRepository,
                             ITypeFeatureProvider featureProvider) : base(name, xamlTypeRepository.GetXamlType(getter.DeclaringType), xamlTypeRepository, featureProvider)
 {
     this.getter = getter;
     this.setter = setter;
     XamlType    = LookupType();
 }
예제 #19
0
        public ITypeContext Build()
        {
            nsRegistry = new XamlNamespaceRegistry();
            typeRepository = new XamlTypeRepository(nsRegistry);

            RegisterPrefixes(nsRegistry);
            RegisterNamespaces(nsRegistry);

            return new TypeContext(typeRepository, nsRegistry, typeFactory);
        }
예제 #20
0
        private Type ResolveFromString(string typeLocator, IXamlTypeRepository typeRepository)
        {
            Guard.ThrowIfNull(typeLocator, nameof(typeLocator));

            var prefixAndType = typeLocator.Dicotomize(':');

            var xamlType = typeRepository.GetByPrefix(prefixAndType.Item1, prefixAndType.Item2);

            return(xamlType.UnderlyingType);
        }
예제 #21
0
        private Type ResolveFromString(string type, IXamlTypeRepository typeRepository)
        {
            Guard.ThrowIfNull(type, nameof(type));

            var split = type.Split(':');
            var prefix = split.Length == 1 ? split[0] : null;
            var typeName = split.Length == 1 ? split[1] : split[0];
            var xamlType = typeRepository.GetByPrefix(prefix, typeName);
            return xamlType.UnderlyingType;
        }
예제 #22
0
        private Type ResolveFromString(string type, IXamlTypeRepository typeRepository)
        {
            Guard.ThrowIfNull(type, nameof(type));

            var split    = type.Split(':');
            var prefix   = split.Length == 1 ? split[0] : null;
            var typeName = split.Length == 1 ? split[1] : split[0];
            var xamlType = typeRepository.GetByPrefix(prefix, typeName);

            return(xamlType.UnderlyingType);
        }
예제 #23
0
        public ITypeContext Build()
        {
            nsRegistry = new XamlNamespaceRegistry();

            typeRepository = new XamlTypeRepository(nsRegistry, typeFactory, featureProvider);

            RegisterPrefixes(nsRegistry);
            RegisterNamespaces(nsRegistry);

            return(new TypeContext(typeRepository, nsRegistry, typeFactory));
        }
예제 #24
0
 public AttachableXamlMember(string name,
     MethodInfo getter,
     MethodInfo setter,
     IXamlTypeRepository xamlTypeRepository,
     ITypeFeatureProvider featureProvider)
     : base(name, xamlTypeRepository.GetXamlType(getter.DeclaringType), xamlTypeRepository, featureProvider)
 {
     this.getter = getter;
     this.setter = setter;
     XamlType = LookupType();
 }
예제 #25
0
        public XamlType(Type type, IXamlTypeRepository typeRepository, ITypeFactory typeTypeFactory, ITypeFeatureProvider featureProvider)
        {
            Guard.ThrowIfNull(type, nameof(type));
            Guard.ThrowIfNull(typeRepository, nameof(typeRepository));
            Guard.ThrowIfNull(featureProvider, nameof(featureProvider));

            TypeRepository  = typeRepository;
            TypeFactory     = typeTypeFactory;
            FeatureProvider = featureProvider;
            UnderlyingType  = type;
            Name            = type.Name;
        }
예제 #26
0
        public XamlType(Type type, IXamlTypeRepository typeRepository, ITypeFactory typeTypeFactory, ITypeFeatureProvider featureProvider)
        {
            Guard.ThrowIfNull(type, nameof(type));
            Guard.ThrowIfNull(typeRepository, nameof(typeRepository));
            Guard.ThrowIfNull(featureProvider, nameof(featureProvider));

            TypeRepository = typeRepository;
            TypeFactory = typeTypeFactory;
            FeatureProvider = featureProvider;
            UnderlyingType = type;
            Name = type.Name;
        }
예제 #27
0
        public static void RegisterMetadataFromAttributes(this IXamlTypeRepository typeRepository, IEnumerable <Type> types)
        {
            var gatheredDependencies = types.GatherAttributesFromMembers <DependsOnAttribute, Tuple <PropertyInfo, string> >((propertyInfo, attribute) => new Tuple <PropertyInfo, string>(propertyInfo, attribute.PropertyName));

            foreach (var tuple in gatheredDependencies)
            {
                var metadata  = new Metadata();
                var type      = tuple.Item1.DeclaringType;
                var property  = tuple.Item1.Name;
                var dependsOn = tuple.Item2;
                metadata.SetMemberDependency(property, dependsOn);
                typeRepository.RegisterMetadata(type, metadata);
            }
        }
예제 #28
0
 public TypeContextBuilder()
 {
     nsRegistry     = new XamlNamespaceRegistry();
     typeRepository = new XamlTypeRepository(nsRegistry, typeFactory, featureProvider);
 }
예제 #29
0
        public static XamlType Create(Type underlyingType,
            IXamlTypeRepository xamlTypeRepository,
            ITypeFactory typeFactory,
            ITypeFeatureProvider featureProvider)
        {
            Guard.ThrowIfNull(underlyingType, nameof(xamlTypeRepository));

            return new XamlType(underlyingType, xamlTypeRepository, typeFactory, featureProvider);
        }
예제 #30
0
 public PerspexXamlType(Type type,
     IXamlTypeRepository typeRepository,
     ITypeFactory typeFactory,
     ITypeFeatureProvider featureProvider) : base(type, typeRepository, typeFactory, featureProvider)
 {
 }
예제 #31
0
 public static void RegisterMetadata <T>(this IXamlTypeRepository typeRepository, Metadata <T> metadata)
 {
     typeRepository.RegisterMetadata(typeof(T), metadata);
 }
예제 #32
0
 public static XamlMember CreateAttached(string name, XamlType parent, IXamlTypeRepository mother)
 {
     return new XamlMember(name, parent, mother, true);
 }
예제 #33
0
 public ValuePipeline(IXamlTypeRepository typeRepository, ITopDownValueContext topDownValueContext)
 {
     this.typeRepository      = typeRepository;
     this.topDownValueContext = topDownValueContext;
 }
예제 #34
0
 public AttachableXamlMember(string name, XamlType owner, IXamlTypeRepository xamlTypeRepository, ITypeFactory typeFactory)
     : base(name, owner, xamlTypeRepository, typeFactory)
 {
 }
예제 #35
0
        private XamlType LookupType(string name, XamlType owner, IXamlTypeRepository mother, bool isAttachable)
        {
            if (!isAttachable)
            {
                var property = owner.UnderlyingType.GetRuntimeProperty(name);
                return XamlType.Builder.Create(property.PropertyType, mother);
            }

            var getMethod = GetGetMethodForAttachable(owner, name);
            return XamlType.Builder.Create(getMethod.ReturnType, mother);
        }
예제 #36
0
 public XamlMember(string name, XamlType declaringType, IXamlTypeRepository xamlTypeRepository, ITypeFeatureProvider featureProvider)
     : base(name, declaringType, xamlTypeRepository, featureProvider)
 {
     XamlType = LookupType();
 }
예제 #37
0
 public WpfXamlType(Type type, IXamlTypeRepository wiringContext, ITypeFactory typeFactory)
     : base(type, wiringContext, typeFactory)
 {
     this.wiringContext = wiringContext;
     this.typeFactory = typeFactory;
 }
예제 #38
0
 public XamlTypeConverterContext(IXamlTypeRepository typeRepository, ITopDownValueContext topDownValueContext)
 {
     this.typeRepository = typeRepository;
     this.topDownValueContext = topDownValueContext;
 }
예제 #39
0
 public TypeContext(IXamlTypeRepository typeRepository, IXamlNamespaceRegistry nsRegistry, ITypeFactory typeFactory)
 {
     this.typeRepository = typeRepository;
     this.nsRegistry     = nsRegistry;
     this.typeFactory    = typeFactory;
 }
예제 #40
0
 public WpfXamlMember(string name, XamlType owner, IXamlTypeRepository mother, bool isAttachable)
     : base(name, owner, mother, isAttachable)
 {
 }
예제 #41
0
 private XamlMember GetRegularMember(XamlType tagType, IXamlTypeRepository typeRepository)
 {
     return typeRepository.GetXamlType(tagType.UnderlyingType).GetMember(Locator.PropertyName);
 }
예제 #42
0
 public XamlInstructionBuilder(IXamlTypeRepository registry)
 {
     this.registry = registry;
 }
예제 #43
0
 public TypeContext(IXamlTypeRepository typeRepository, IXamlNamespaceRegistry nsRegistry, ITypeFactory typeFactory)
 {
     this.typeRepository = typeRepository;
     this.nsRegistry = nsRegistry;
     this.typeFactory = typeFactory;
 }
예제 #44
0
 public WpfXamlMember(string name, XamlType declaringType, IXamlTypeRepository xamlTypeRepository, ITypeFeatureProvider typeFeatureProvider)
     : base(name, declaringType, xamlTypeRepository, typeFeatureProvider)
 {
 }
예제 #45
0
 public static XamlMember Create(string name, XamlType parent, IXamlTypeRepository mother)
 {
     return new XamlMember(name, parent, mother, false);
 }
예제 #46
0
 public XamlTypeConverterContext(IXamlTypeRepository typeRepository, ITopDownValueContext topDownValueContext)
 {
     this.typeRepository      = typeRepository;
     this.topDownValueContext = topDownValueContext;
 }
예제 #47
0
 public WpfXamlMember(string name, XamlType declaringType, IXamlTypeRepository xamlTypeRepository, ITypeFeatureProvider typeFeatureProvider)
     : base(name, declaringType, xamlTypeRepository, typeFeatureProvider)
 {
 }
예제 #48
0
 public WpfXamlType(Type type, IXamlTypeRepository xamlTypeRepository, ITypeFactory typeFactory, ITypeFeatureProvider featureProvider)
     : base(type, xamlTypeRepository, typeFactory, featureProvider)
 {
 }
예제 #49
0
 public TypeContextBuilder()
 {
     nsRegistry = new XamlNamespaceRegistry();
     typeRepository = new XamlTypeRepository(nsRegistry, typeFactory, featureProvider);
 }
예제 #50
0
 public WpfXamlType(Type type, IXamlTypeRepository typeRepository)
     : base(type, typeRepository)
 {
     this.typeRepository = typeRepository;
 }
예제 #51
0
 public static Metadata GetMetadata <T>(this IXamlTypeRepository typeRepository)
 {
     return(typeRepository.GetMetadata(typeof(T)));
 }
예제 #52
0
 public PerspexXamlType(Type type,
                        IXamlTypeRepository typeRepository,
                        ITypeFactory typeFactory,
                        ITypeFeatureProvider featureProvider) : base(type, typeRepository, typeFactory, featureProvider)
 {
 }
예제 #53
0
 public ValuePipeline(IXamlTypeRepository typeRepository, ITopDownValueContext topDownValueContext)
 {
     this.typeRepository = typeRepository;
     this.topDownValueContext = topDownValueContext;
 }
예제 #54
0
 public WpfXamlType(Type type, IXamlTypeRepository xamlTypeRepository, ITypeFactory typeFactory, ITypeFeatureProvider featureProvider)
     : base(type, xamlTypeRepository, typeFactory, featureProvider)
 {
 }