泛型方法的返回类型
我有一个通用方法,它返回通用类型的对象。一些代码:
public static T Foo<T>(string value)
{
if (typeof(T) == typeof(String))
return value;
if (typeof(T) == typeof(int))
return Int32.Parse(value);
// Do more stuff
}
我可以看到编译器可能会抱怨这一点(“无法将类型'String'转换为'T'”),即使代码不应在运行时导致任何逻辑错误。有什么办法可以实现我正在寻找的东西吗?选角并没有什么帮助...
I have a generic method which is to return an object of the generic type. Some code:
public static T Foo<T>(string value)
{
if (typeof(T) == typeof(String))
return value;
if (typeof(T) == typeof(int))
return Int32.Parse(value);
// Do more stuff
}
I can see that the compiler might complain about this ("Cannot convert type 'String' to 'T'"), even if the code shouldn't cause any logical errors runtime. Is there any way to achieve what I'm looking for? Casting doesn't help...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,您可以这样做:
这将涉及值类型的装箱,但它会起作用。
您确定这最好作为单一方法来完成,而不是(比如说)可以由不同转换器实现的通用接口?
或者,您可能需要一个像这样的
Dictionary
:然后您可以像这样使用它:
Well, you can do this:
That will involve boxing for value types, but it will work.
Are you sure this is best done as a single method though, rather than (say) a generic interface which can be implemented by different converters?
Alternatively, you might want a
Dictionary<Type, Delegate>
like this:then you'd use it like this: