/// <summary> /// 把类型的实例t和lcpi参数里的属性进行合并。 /// </summary> /// <param name="t">实例t</param> /// <param name="lcpi">里面包含属性列表的信息。</param> private static void MergeProperty(Type t, List <CustomerPropertyInfo> lcpi) { CustomerPropertyInfo cpi; foreach (PropertyInfo pi in t.GetProperties()) { cpi = new CustomerPropertyInfo(pi.PropertyType.FullName, pi.Name); lcpi.Add(cpi); } }
/// <summary> /// 添加属性到类型的实例,注意:该操作会将其它成员清除掉,其功能有待完善。 /// </summary> /// <param name="classType">指定类型的实例。</param> /// <param name="cpi">表示一个属性。</param> /// <returns>返回处理过的类型的实例。</returns> public static Type AddProperty(Type classType, CustomerPropertyInfo cpi) { List <CustomerPropertyInfo> lcpi = new List <CustomerPropertyInfo>(); lcpi.Add(cpi); //合并先前的属性,以便一起在下一步进行处理。 MergeProperty(classType, lcpi); //把属性加入到Type。 return(AddPropertyToType(classType, lcpi)); }
/// <summary> /// 从类型的实例t的属性移除属性列表lcpi,返回的新属性列表在lcpi中。 /// </summary> /// <param name="t">类型的实例t。</param> /// <param name="lcpi">要移除的属性列表。</param> private static List <CustomerPropertyInfo> SeparateProperty(Type t, List <string> ls) { List <CustomerPropertyInfo> ret = new List <CustomerPropertyInfo>(); CustomerPropertyInfo cpi; foreach (PropertyInfo pi in t.GetProperties()) { foreach (string s in ls) { if (pi.Name != s) { cpi = new CustomerPropertyInfo(pi.PropertyType.FullName, pi.Name); ret.Add(cpi); } } } return(ret); }