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; }
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); }