Esempio n. 1
0
            public TFactory this[InstanceOrigin instanceOrigin]
            {
                get
                {
                    switch (instanceOrigin)
                    {
                    case InstanceOrigin.Instantiation:
                        return(_instantiationFactory);

                    case InstanceOrigin.Registration:
                        return(_registrationFactory);

                    default:
                        throw new NotSupportedException();
                    }
                }
            }
 /// <summary>
 /// 从对象的 XML 表示形式生成该对象。
 /// </summary>
 /// <param name="reader">从中对对象进行反序列化的 <see cref="T:System.Xml.XmlReader" /> 流。</param>
 public override void ReadXml(XmlReader reader)
 {
     if (reader.HasAttributes)
     {
         while (reader.MoveToNextAttribute())
         {
             if (reader.Name == "typedef")
             {
                 MethodDelegatePattern = reader.Value;
             }
             else if (reader.Name == "fun")
             {
                 MethodName = reader.Value;
             }
             else if (reader.Name == "origin")
             {
                 OriginType = (InstanceOrigin)Enum.Parse(typeof(InstanceOrigin), reader.Value);
             }
         }
     }
 }
 public bool TryGetInstance(Type instanceType, object identity, out object result, out InstanceOrigin instanceOrigin)
 {
     if (provider != null) {
         return provider.TryGetInstance(state, instanceType, identity, out result, out instanceOrigin);
     }
     result = null;
     instanceOrigin = InstanceOrigin.None;
     return false;
 }
Esempio n. 4
0
        public GenericFactory(Type abstractTypeDefinition, Type genericTypeDefinition, InstanceOrigin instanceOrigin, object serviceKey, ConstructorInfo constructor, Substitution substitution, IResolvableMembersProvider <object> resolvableMembersProvider = null)
            : base(abstractTypeDefinition, serviceKey, substitution)
        {
            _genericTypeDefinition     = genericTypeDefinition ?? abstractTypeDefinition;
            InstanceOrigin             = instanceOrigin;
            _resolvableMembersProvider = resolvableMembersProvider;

            _dependencyFactories = new Dictionary <Type, IDependencyFactory>();
            _constructorIndex    = _genericTypeDefinition.GetTypeInfo().DeclaredConstructors.Where(x => x.IsPublic).IndexOf(constructor);
        }