具有不同返回类型的可枚举Func

本文关键字:枚举 Func 返回类型 | 更新日期: 2023-09-27 18:22:39

是否可能有一个具有不同返回类型的Enumerable Func,我认为答案是否定的,但如何支持它。我的代码目前看起来是这样的,但我需要能够传递不同的返回类型作为输入类型,反之亦然。我希望有一个结构,在该结构中,前一个操作的返回类型形成下一个动作的输入。

  • 动作1取A并返回B
  • 动作2取B并返回C
  • 动作3取C并返回D

我正在构建一个接受测试指令的虚拟机,但我有点不确定如何从这里开始。

下面的代码是我理想的工作方式,但它显然不会。。。对最好的方法有什么想法吗?

IEnumerable<Func<Tariff, Tariff> actions = new Func<Tariff, Tariff>[]
{
   a = > {CreateStandardTariff();}, //returns typeof(StandardTariff)
   a = > {CreateTariff();}          //returns typeof(Tariff) takes StandardTariff      
};
Test(actions);

public void Test<T>(IEnumerable<Func<T,T>> actions) where T : class
{
      T current = null;
      foreach(Func<T,T> action in actions)
         current = action(current);
}

我使用的是3.5

具有不同返回类型的可枚举Func

您可以在输入和输出类型之间实现一个公共接口或抽象基类。例如ITariff

class Tariff : ITariff {}
class StandardTariff : ITariff {}

然后使用:

Func<ITariff, ITariff>

您可以使用动态对象作为输入和输出类型