示例#1
0
        private IEnumerable <SettingsProperty> GetSettingsProperties(object baseObject, Type type, SettingsPropertyName path, PropertyInfo basePropInfo, object context)
        {
            if (Reflector.HasParameterLessDefaultConstructor(type))
            {
                object obj = Activator.CreateInstance(type);
                ObjDict.Add(path, context, obj);

                if (baseObject != null)
                {
                    basePropInfo.SetValue(baseObject, obj);
                }

                foreach (var tuple in Reflector.GetNameAndType(type))
                {
                    if (Reflector.IsSimpleType(tuple.Item2))
                    {
                        yield return(new SettingsProperty(path + tuple.Item1, tuple.Item2, null)
                        {
                            InternalContext = new Dictionary <string, object>
                            {
                                { "__SettAccessor", tuple.Item3 },
                            }
                        });
                    }
                    else
                    {
                        foreach (var settingsProperty in GetSettingsProperties(obj, tuple.Item2, path + tuple.Item1, tuple.Item3, context))
                        {
                            yield return(settingsProperty);
                        }
                    }
                }
            }
        }
示例#2
0
 public void Add(SettingsPropertyName settName, object context, object obj)
 {
     _InnerDict.Add(Tuple.Create(settName, context), obj);
 }
示例#3
0
 internal object Get(SettingsPropertyName settName, object context)
 {
     return(_InnerDict[Tuple.Create(settName, context)]);
 }
示例#4
0
 internal DynamicSettingsObject(SettingsRepository settRepo, SettingsPropertyName root, TSETT context)
 {
     _SettRepo     = settRepo;
     _SettPropName = root;
     _Context      = context;
 }