转换函数<派生类型,对象>到Func

本文关键字:Func BaseType Object 函数 类型 转换 对象 派生 | 更新日期: 2023-09-27 18:02:43

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

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

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

转换函数<派生类型,对象>到Func<BaseType, Object>

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

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

演示。