在这里快点〜 我想转换< T> ToString所以我可以用该类型替换变量〜
public void ChangePanel<T>(T Action){
FieldInfo Field = T.GetField(T.toString);
Field.SetValue(SomeObject, Action);
}
如果有更好的方法,请告诉我!!
编辑:仅供参考 SomeObject 中的变量与类型
相同答案 0 :(得分:8)
您可以使用typeof
Keyword获取Type个实例,使用Type.Name Property获取该类型的名称。
public void ChangePanel<T>(T action)
{
Type typeOfObject = someObject.GetType();
Type typeOfAction = typeof(T);
FieldInfo field = typeOfObject.GetField(typeOfAction.Name);
field.SetValue(someObject, action);
}
答案 1 :(得分:7)
是。 ToString()
类定义了object
,所有内容都来自于此,我希望您可以在任何类型T
上调用它。但是,您需要在参数本身而不是类型上调用它,因此您应该T.ToString()
执行Action.ToString()
。如果要获取该类型的名称,则应使用反射而不是ToString
。
此外,反射选项是;
typeof(T).Name
或
Action.GetType().Name
答案 2 :(得分:1)
如果您想获得通用类型的名称,那么您只需拨打typeof(T).Name
:
public static string GetGenericTypeName<T>()
{
return typeof(T).Name;
}
答案 3 :(得分:0)
ToString
方法是一种方法,所以你需要括号来调用它,这种情况对于标识符很重要:
FieldInfo Field = (typeof T).GetField(Action.ToString());
GetField
是Type
类的一种方法,因此您需要typeof
来获取Type
泛型类型的T
对象。