コード例 #1
0
ファイル: FactoryPolicy.cs プロジェクト: rexzh/RexToy
        public override void Initialize(XAccessor x)
        {
            _teardown = x.GetValue <bool>(TEARDOWN_ATTR) ?? false;
            var xParams = x.NavigateToList(PARAM);

            foreach (var xParam in xParams)
            {
                string name = xParam.GetStringValue(NAME_ATTR);
                string val  = xParam.GetStringValue(VALUE_ATTR);
                if (string.IsNullOrEmpty(name))
                {
                    ExceptionHelper.ThrowPolicyInitNullError(this.GetType(), NAME_ATTR);
                }
                _injectionHints.Add(name, val);
            }
            string strFactoryType = x.GetStringValue(CLASS);

            if (string.IsNullOrEmpty(strFactoryType))
            {
                ExceptionHelper.ThrowPolicyInitNullError(this.GetType(), CLASS);
            }
            _factoryType = Reflector.LoadType(strFactoryType);
            _methodName  = x.GetStringValue(METHOD);
            if (string.IsNullOrEmpty(_methodName))
            {
                ExceptionHelper.ThrowPolicyInitNullError(this.GetType(), METHOD);
            }
        }
コード例 #2
0
ファイル: XmlLogConfig.cs プロジェクト: rexzh/RexToy
 public XmlLogConfig(string path)
 {
     if (!File.Exists(path))
     {
         ExceptionHelper.ThrowConfigFileNotExist(path);
     }
     _x     = XDoc.LoadFromFile(path);
     _cache = new ConfigCache();
     Initialize();
 }
コード例 #3
0
 public void Initialize(XAccessor x)
 {
     _teardown     = x.GetValue <bool>(TEARDOWN_ATTR) ?? false;
     _propertyName = x.GetStringValue(PROPERTY_ATTR);
     if (string.IsNullOrEmpty(_propertyName))
     {
         ExceptionHelper.ThrowPolicyInitNullError(this.GetType(), PROPERTY_ATTR);
     }
     _propertyValue = x.GetStringValue(VALUE_ATTR);
 }
コード例 #4
0
ファイル: ComponentInfoFactory.cs プロジェクト: rexzh/RexToy
        private IPolicy CreatePolicy(XAccessor xPolicy)
        {
            IReadOnlyDictionary <string, Type> dict = _cfg.LoadCustomizedPolicies();
            IPolicy policy = null;

            //Note:check build-in first
            switch (xPolicy.LocalName)
            {
            case "singleton":
                policy = new SingletonPolicy();
                policy.Initialize(xPolicy);
                break;

            case "factory":
                policy = new FactoryPolicy();
                policy.Initialize(xPolicy);
                break;

            case "instance":
                policy = new InstancePolicy();
                policy.Initialize(xPolicy);
                break;

            case "stateless":
                policy = new StatelessPolicy();
                policy.Initialize(xPolicy);
                break;

            case "activator":
                policy = new ActivatorPolicy();
                policy.Initialize(xPolicy);
                break;

            case "setter":
                policy = new SetterPolicy();
                policy.Initialize(xPolicy);
                break;

            default:
                if (dict.ContainsKey(xPolicy.LocalName))
                {
                    policy = Activator.CreateInstance(dict[xPolicy.LocalName]) as IPolicy;
                    policy.Initialize(xPolicy);
                }
                break;
            }

            if (policy == null)
            {
                throw new UnknownPolicyException(string.Format("Unknown policy:[{0}].", xPolicy.LocalName));
            }
            return(policy);
        }
コード例 #5
0
ファイル: ComponentInfoFactory.cs プロジェクト: rexzh/RexToy
        public IComponentInfo CreateInfo(XAccessor x)
        {
            string id           = x.GetStringValue(ID_ATTR);
            bool?  lcManage     = x.GetValue <bool>(LIFECYCLE_MANAGEMENT_ATTR);
            Type   serviceType  = null;
            string xServiceType = x.GetStringValue(SERVICE_TYPE);

            if (!string.IsNullOrEmpty(xServiceType))
            {
                serviceType = Reflector.LoadType(xServiceType);
            }
            Type   componentType  = null;
            string xComponentType = x.GetStringValue(COMPONENT_TYPE);

            if (!string.IsNullOrEmpty(xComponentType))
            {
                componentType = Reflector.LoadType(xComponentType);
            }

            List <IPolicy> policies  = new List <IPolicy>();
            XAccessor      xPolicies = x.NavigateToSingleOrNull(POLICY);

            if (xPolicies != null)
            {
                foreach (var xPolicy in xPolicies.Children)
                {
                    if (xPolicy.IsComment)
                    {
                        continue;
                    }
                    IPolicy policy = CreatePolicy(xPolicy);
                    policies.Add(policy);
                }
            }

            IComponentInfo info = new ComponentInfo(id, serviceType, componentType, policies, lcManage ?? false);

            return(info);
        }
コード例 #6
0
 public void Initialize(XAccessor x)
 {
 }
コード例 #7
0
ファイル: CreationPolicy.cs プロジェクト: rexzh/RexToy
 public abstract void Initialize(XAccessor x);
コード例 #8
0
ファイル: SingletonPolicy.cs プロジェクト: rexzh/RexToy
 public void Initialize(XAccessor x)
 {
     //Note:No additional settings.
 }