public Dictionary <string, myPropInfo> Getproperties(Type type, string typename, bool ShowReadOnlyProperties) { Dictionary <string, myPropInfo> sd = null; if (_propertycache.TryGetValue(typename, out sd)) { return(sd); } else { sd = new Dictionary <string, myPropInfo>(); var bf = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static; PropertyInfo[] pr = type.GetProperties(bf); foreach (PropertyInfo p in pr) { if (p.GetIndexParameters().Length > 0)// Property is an indexer { continue; } myPropInfo d = CreateMyProp(p.PropertyType, p.Name); d.setter = Reflection.CreateSetMethod(type, p, ShowReadOnlyProperties); if (d.setter != null) { d.CanWrite = true; } d.getter = Reflection.CreateGetMethod(type, p); #if !NET35 var att = p.GetCustomAttributes(true); foreach (var at in att) { if (at is DataMemberAttribute) { var dm = (DataMemberAttribute)at; if (dm.Name != "") { d.memberName = dm.Name; } } } if (d.memberName != null) { sd.Add(d.memberName, d); } else #endif sd.Add(p.Name.ToLower(), d); } FieldInfo[] fi = type.GetFields(bf); foreach (FieldInfo f in fi) { myPropInfo d = CreateMyProp(f.FieldType, f.Name); if (f.IsLiteral == false) { d.setter = Reflection.CreateSetField(type, f); if (d.setter != null) { d.CanWrite = true; } d.getter = Reflection.CreateGetField(type, f); #if !NET35 var att = f.GetCustomAttributes(true); foreach (var at in att) { if (at is DataMemberAttribute) { var dm = (DataMemberAttribute)at; if (dm.Name != "") { d.memberName = dm.Name; } } } if (d.memberName != null) { sd.Add(d.memberName, d); } else #endif sd.Add(f.Name.ToLower(), d); } } _propertycache.Add(typename, sd); return(sd); } }
internal Getters[] GetGetters(Type type, bool ShowReadOnlyProperties, List <Type> IgnoreAttributes) { Getters[] val = null; if (_getterscache.TryGetValue(type, out val)) { return(val); } var bf = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static; //if (ShowReadOnlyProperties) // bf |= BindingFlags.NonPublic; PropertyInfo[] props = type.GetProperties(bf); List <Getters> getters = new List <Getters>(); foreach (PropertyInfo p in props) { if (p.GetIndexParameters().Length > 0) {// Property is an indexer continue; } if (!p.CanWrite && (ShowReadOnlyProperties == false))//|| isAnonymous == false)) { continue; } if (IgnoreAttributes != null) { bool found = false; foreach (var ignoreAttr in IgnoreAttributes) { if (p.IsDefined(ignoreAttr, false)) { found = true; break; } } if (found) { continue; } } string mName = null; #if !NET35 var att = p.GetCustomAttributes(true); foreach (var at in att) { if (at is DataMemberAttribute) { var dm = (DataMemberAttribute)at; if (dm.Name != "") { mName = dm.Name; } } } #endif GenericGetter g = CreateGetMethod(type, p); if (g != null) { getters.Add(new Getters { Getter = g, Name = p.Name, lcName = p.Name.ToLower(), memberName = mName }); } } FieldInfo[] fi = type.GetFields(bf); foreach (var f in fi) { if (IgnoreAttributes != null) { bool found = false; foreach (var ignoreAttr in IgnoreAttributes) { if (f.IsDefined(ignoreAttr, false)) { found = true; break; } } if (found) { continue; } } string mName = null; #if !NET35 var att = f.GetCustomAttributes(true); foreach (var at in att) { if (at is DataMemberAttribute) { var dm = (DataMemberAttribute)at; if (dm.Name != "") { mName = dm.Name; } } } #endif if (f.IsLiteral == false) { GenericGetter g = CreateGetField(type, f); if (g != null) { getters.Add(new Getters { Getter = g, Name = f.Name, lcName = f.Name.ToLower(), memberName = mName }); } } } val = getters.ToArray(); _getterscache.Add(type, val); return(val); }
internal Getters[] GetGetters(Type type, bool ShowReadOnlyProperties, List <Type> IgnoreAttributes)//JSONParameters param) { Getters[] val = null; if (_getterscache.TryGetValue(type, out val)) { return(val); } PropertyInfo[] props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); List <Getters> getters = new List <Getters>(); foreach (PropertyInfo p in props) { if (p.GetIndexParameters().Length > 0) {// Property is an indexer continue; } if (!p.CanWrite && ShowReadOnlyProperties == false) { continue; } if (IgnoreAttributes != null) { bool found = false; foreach (var ignoreAttr in IgnoreAttributes) { if (p.IsDefined(ignoreAttr, false)) { found = true; break; } } if (found) { continue; } } GenericGetter g = CreateGetMethod(type, p); if (g != null) { getters.Add(new Getters { Getter = g, Name = p.Name, lcName = p.Name.ToLower() }); } } FieldInfo[] fi = type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static); foreach (var f in fi) { if (IgnoreAttributes != null) { bool found = false; foreach (var ignoreAttr in IgnoreAttributes) { if (f.IsDefined(ignoreAttr, false)) { found = true; break; } } if (found) { continue; } } if (f.IsLiteral == false) { GenericGetter g = CreateGetField(type, f); if (g != null) { getters.Add(new Getters { Getter = g, Name = f.Name, lcName = f.Name.ToLower() }); } } } val = getters.ToArray(); _getterscache.Add(type, val); return(val); }