使用模板类《T》初始化----掉沟里了
T modeT = Activator.CreateInstance(); -------初始化模板
Type type = typeof(T); -------获取传入Mode类型
PropertyInfo[] propertyNames = type.GetProperties();--------反射加载Mode类明细
public T GetCustomModePropertyForElement<T>(Element element)
{
try
{
T modeT = Activator.CreateInstance<T>();
Type type = typeof(T);
PropertyInfo[] propertyNames = type.GetProperties();
PropertyHandler property = Utilities.ComApp.CreatePropertyHandler(element);
foreach (PropertyInfo item in propertyNames)
{
if (property.SelectByAccessString(item.Name))
{
item.SetValue(modeT, Convert.ChangeType(property.GetDisplayString(),item.PropertyType), null);
}
}
return modeT;
}
catch (Exception ex)
{
Utilities.ComApp.MessageCenter.AddMessage(ex.Message, "Error", MsdMessageCenterPriority.Error, true);
return Activator.CreateInstance<T>();
}
}
Convert.ChangeType(object value,Type type)-通用类型转换
item.PropertyType 获取反射集合元素类型
property.GetDisplayString() 我这里返回是String
反射给Mode赋值操作
void SetValue(object obj, object value, object[] index);----设置属性值
obj---Mode实例
value ----按类型转换后的值
index ----一般给赋值null
本文记录了一次在使用模板类<T>初始化时遇到的问题,详细探讨了如何通过Convert.ChangeType进行通用类型转换,并结合反射技术进行Mode对象的属性赋值操作,包括获取反射集合元素类型和设置属性值的方法。
4007

被折叠的 条评论
为什么被折叠?



