将Func <derivedtype,object =“”>转换为Func <basetype,object =“”>

时间:2015-07-14 15:03:20

标签: c# delegates

从获取派生类型的第一个参数的委托转换为接收基本类型的委托的最佳方法是什么? 我的意思是:

Func<DerivedType, Object> original = ...;
Func<BaseType, Object> converted = Something(original);

当然,强制转换不起作用,因为它们实际上是两种不同的类型。

1 个答案:

答案 0 :(得分:1)

由于您希望将基类型传递给采用派生类型的方法,因此您需要添加强制转换。如果您知道对converted的所有调用都将通过DerivedType,那么您可以制作一个简单的包装器,如下所示:

Func<BaseType,Object> converted = b => original((DerivedType)b);

Demo.

相关问题