我想编写一个这样的方法:
- public static T Test<T>()
- {
- if (typeof(T)==typeof(string))
- return "1241";
- // do something else
- }
但我似乎无法弄清楚如何把它拉下来.我想根据该方法被调用的T类型返回值.我需要返回字符串,int,定制类,列表等.
实际的用例是一些自定义的序列化代码,其中反序列化代码知道应该产生的对象的类型是至关重要的.
澄清:
上面的示例给出以下错误:
无法将字符串转换为T型
理想的解决方案将适用于值类型和引用类型,不会包含用于重载解析的虚拟参数.
我开始怀疑这种理想的解决方案是否存在.
谢谢卢卡斯
解决方法
对象的中间转换不是很理想,但是这样的事情应该是诀窍:
- public static T Test<T>()
- {
- if (typeof(T) == typeof(string))
- return (T)(object)"1241";
- // do something else
- }