在c#中将一个任意类型转换为另一个类型的通用方法

13x*_*ver 2 c# generics

我想做这样的事情:

public static TResult MyCast<TSource, TResult>(TSource item)
{
    return (TResult)item;
}
Run Code Online (Sandbox Code Playgroud)

没有TSource或TResult的限制,并尽可能避免不必要的拳击. 编辑:我想强调一下,我想要一个简单的类型转换,而不是精心设计的类型转换.如果说string,在铸造中失败是完全可以的int.

有没有理智的方法来使用CLR 2.0做到这一点?

编辑:这是一个简化版本,所以它没用,是的.但考虑转换泛型集合,例如:

public static Dictionary<string, TResult> CastValues<TSource, TResult>(this Dictionary<string, TSource> dictionary)
Run Code Online (Sandbox Code Playgroud)

在与我的同事讨论之后,似乎没有简单的方法来实现这样的功能(如果可能的话),所以我遇到了几种非常简单的方法,用于不同情况(即向上和向下)的代码膨胀引用类型和某些值类型的转换):(

太糟糕了,我无法使用.NET 4.0和它的所有dynamic优点.

Hen*_*man 7

怎么会有
x = MyCast<SourceType, ResultType>(y)

x = (ResultType)y呢?