Exemple #1
0
        public ToolkitDynObject(string factoryName)
        {
            BaseXmlConfigFactory factory = BaseGlobalVariable.Current.FactoryManager.GetConfigFactory(
                factoryName);

            fConfigData = factory.ConfigData;
        }
Exemple #2
0
        public void Add(BaseXmlConfigFactory factory, string regName, BaseObjectElementAttribute attr, Type type)
        {
            ObjectElementAttribute objAttr = new ObjectElementAttribute(attr.NamespaceType)
            {
                LocalName      = regName,
                ObjectType     = type,
                UseConstructor = attr.UseConstructor
            };

            if (attr.NamespaceType == NamespaceType.Namespace)
            {
                objAttr.NamespaceUri = attr.NamespaceUri;
            }
            QName       qName = objAttr.GetQName(objAttr.LocalName);
            VersionData data  = ObjectUtil.TryGetValue(fLocalElements, qName.LocalName);

            if (data == null)
            {
                data = new VersionData();
                fLocalElements.Add(qName.LocalName, data);
                fXmlElements.Add(qName, data);
            }
            data.Add(attr, objAttr, factory.DefaultVersion);
            fTypeElements.Add(type, objAttr);
        }
Exemple #3
0
        public BaseXmlConfigFactory GetConfigFactory(string factoryName)
        {
            TkDebug.AssertArgumentNullOrEmpty(factoryName, "factoryName", this);

            BaseXmlConfigFactory result = ObjectUtil.TryGetValue(fXmlConfigs, factoryName);

            TkDebug.AssertNotNull(result, string.Format(ObjectUtil.SysCulture,
                                                        "没有找到名称为{0}的配置工厂", factoryName), this);
            return(result);
        }
Exemple #4
0
        public void Add(BaseXmlConfigFactory factory, string regName, BaseObjectElementAttribute attr, Type type)
        {
            ObjectElementAttribute objAttr = new ObjectElementAttribute(attr.NamespaceType)
            {
                LocalName      = regName,
                ObjectType     = type,
                UseConstructor = attr.UseConstructor
            };

            if (attr.NamespaceType == NamespaceType.Namespace)
            {
                objAttr.NamespaceUri = attr.NamespaceUri;
            }
            QName qName = objAttr.GetQName(objAttr.LocalName);

            fXmlElements.Add(qName, objAttr);
            fLocalElements.Add(qName.LocalName, objAttr);
            fTypeElements.Add(type, objAttr);
        }
Exemple #5
0
        public void Add(BasePlugInFactory factory)
        {
            TkDebug.AssertArgumentNull(factory, "factory", this);

            lock (this)
            {
                TkDebug.Assert(!fAllFactories.ContainsKey(factory.Name), string.Format(ObjectUtil.SysCulture,
                                                                                       "{0}已经注册,请检查代码", factory.Name), factory);

                BaseXmlConfigFactory config = factory as BaseXmlConfigFactory;
                if (config != null)
                {
                    fXmlConfigs.Add(config.Name, config);
                }
                else
                {
                    fCodeFactories.Add(factory.Name, factory);
                }
                fAllFactories.Add(factory.Name, factory);
            }
        }
Exemple #6
0
        internal void ReadElementAttribute(Type type, PropertyInfo property, string modelName,
                                           object[] propertyAttributes)
        {
            object dynamicAttribute = (from attr in propertyAttributes
                                       where attr is DynamicElementAttribute
                                       select attr).FirstOrDefault();

            if (dynamicAttribute != null)
            {
                DynamicElementAttribute attribute = dynamicAttribute as DynamicElementAttribute;
                BaseXmlConfigFactory    factory   = attribute.PlugInFactory;
                if (fXmlConfigFactories == null)
                {
                    fXmlConfigFactories = new Dictionary <string, BaseXmlConfigFactory>();
                }
                if (!fXmlConfigFactories.ContainsKey(factory.Name))
                {
                    fXmlConfigFactories.Add(factory.Name, factory);
                }
                //factory.AddElements(this, type, property, modelName, attribute);
                ReflectorObjectPropertyInfo objInfo = new ReflectorObjectPropertyInfo(property, attribute, modelName);
                var dyn = new ConfigFactoryElementReader(attribute, objInfo, modelName);
                fMultiElements.Add(dyn);
                fElementWriter.Add(dyn);
            }
            else
            {
                //foreach (var attr in propertyAttributes)
                //{
                //    if (attr is BaseDictionaryAttribute)
                //        InternalAdd(type, property, attr as NamedAttribute, modelName);
                //    else
                //    {
                //        SimpleElementAttribute eleAttr = attr as SimpleElementAttribute;
                //        if (eleAttr != null)
                //            AddAttribute(eleAttr, type, property, modelName);
                //    }
                //}

                var objElemAttrs = (from item in propertyAttributes
                                    where item is ObjectElementAttribute
                                    select(ObjectElementAttribute) item).ToArray();
                if (objElemAttrs.Length == 0)
                {
                    foreach (var attr in propertyAttributes)
                    {
                        if (attr is BaseDictionaryAttribute)
                        {
                            AddSingleAttrible(type, property, attr as NamedAttribute, modelName);
                        }
                        else
                        {
                            SimpleElementAttribute eleAttr = attr as SimpleElementAttribute;
                            if (eleAttr != null)
                            {
                                AddSingleAttrible(type, property, eleAttr, modelName);
                            }
                        }
                    }
                }
                else if (objElemAttrs.Length == 1)
                {
                    AddSingleAttrible(type, property, objElemAttrs[0], modelName);
                }
                else
                {
                    var multi = new MultipleElementReader(property, modelName, objElemAttrs);
                    fMultiElements.Add(multi);
                    fElementWriter.Add(multi);
                }
            }
        }