Example #1
0
        /// <summary>
        /// 根据配置文件的设置, 将构造原则(IPolicy)实例添加至Builder对象的构造原则链中.
        /// </summary>
        /// <param name="configSection">配置文件对象.</param>
        /// <param name="builder">Builder对象</param>
        private void applyConfigurationToBuilder(FactoryConfigurationSection configSection, IBuilder <BuilderStage> builder)
        {
            foreach (InterfaceElement interfaceEle in configSection.Interfaces)
            {
                foreach (InstanceElement instanceEle in interfaceEle.Instances)
                {
                    // 添加接口与实现的Map关系!!
                    TypeMappingPolicy tmp = new TypeMappingPolicy(instanceEle.Type, instanceEle.Name);
                    builder.Policies.Set <ITypeMappingPolicy>(tmp, interfaceEle.Type, instanceEle.Name);

                    // 添加接口实例的构造原则(IPolicy)(添加实例构造函数的参数列表).
                    List <IParameter> paras = new List <IParameter>();
                    foreach (ConstructorParameterElement conParaEle in instanceEle.ConstructorParameters)
                    {
                        paras.Add(new ValueParameter(conParaEle.Type, conParaEle.GetParameterValue()));
                    }

                    ConstructorPolicy csp = new ConstructorPolicy(paras.ToArray());
                    builder.Policies.Set <ICreationPolicy>(csp, instanceEle.Type, instanceEle.Name);

                    // 添加是否单件的构造原则(IPolicy).
                    SingletonPolicy slp = new SingletonPolicy(instanceEle.IsSingleton);
                    builder.Policies.Set <ISingletonPolicy>(slp, instanceEle.Type, instanceEle.Name);
                }
            }
        }
Example #2
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public DependencyInjectionFactoryStrategy(FactoryConfigurationSection configSection)
            : base(configSection)
        {
            locator.Add(typeof(ILifetimeContainer), lifetimeContainer);

            builder = new Builder();
            this.applyConfigurationToBuilder(configSection, this.builder);
        }
Example #3
0
        /// <summary>
        /// Static constructor.
        /// </summary>
        static CommonLibraryFactory()
        {
            // Get configuration section.
            configSection = (FactoryConfigurationSection)ConfigurationManager.GetSection(sectionName);

            // Create a factory strategy.
            factoryStrategy = GetFactoryStrategy(configSection);
        }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="configElement"></param>
 public HardcodeFactoryStrategy(FactoryConfigurationSection configSection)
     : base(configSection)
 {
 }
Example #5
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="configElement"></param>
 public ReflectionFactoryStrategy(FactoryConfigurationSection configSection)
     : base(configSection)
 {
 }
Example #6
0
        /// <summary>
        /// Get a factory strategy instance.
        /// </summary>
        /// <param name="configSection"></param>
        /// <returns>a factory strategy instance.</returns>
        public static IFactoryStrategy GetFactoryStrategy(FactoryConfigurationSection configSection)
        {
            object obj = Activator.CreateInstance(configSection.StrategyType, new object[] { configSection });

            return(obj as IFactoryStrategy);
        }
 /// <summary>
 /// Protected constructor.
 /// </summary>
 /// <param name="configElement"></param>
 protected AbstractFactoryStrategy(FactoryConfigurationSection configSection)
 {
     this.configSection = configSection;
 }