从通用类型转换为具体类型的最简洁方法

时间:2014-10-27 21:46:17

标签: c# .net asp.net-mvc generics

我有一个方法

public Dto Convert<T>(T source)
{
   //todo here?
}

我需要根据T调用以下方法,我是否必须执行TypeOf和switch语句(试图避免这种情况)?

public Dto Convert(Contact source) {}
public Dto Convert(Org source) {}
etc...

1 个答案:

答案 0 :(得分:4)

您可以使用dynamic

public Dto Convert<T>(T source)
{
   var resut = (Dto)Convert((dynamic)source);
}

它将根据实际的source类型在运行时执行方法选择。当没有合适的方法可用时,也会失败。

但是你的设计似乎总体上有问题。您确定自己并未尝试解决XY problem吗?