使用模板类《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