将 Func<DerivedType, Object> 转换为 Func<BaseType, Object>

Convert Func<DerivedType, Object> to Func<BaseType, Object>

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

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

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

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

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

Demo.