Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有不同返回类型的可枚举Func_C#_Lambda - Fatal编程技术网

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

C# 具有不同返回类型的可枚举Func,c#,lambda,C#,Lambda,有没有可能有一个具有不同返回类型的可枚举Func,我想答案是否定的,但人们怎么能支持这一点呢。我的代码目前看起来像这样,但我需要能够将不同的返回类型作为输入类型传递,反之亦然。我希望有一个结构,其中前一个操作返回类型构成下一个操作的输入 动作1获取A并返回B 动作2取B并返回C 动作3取C并返回D 我正在构建一个虚拟机,它接受测试指令,但我有点不确定如何从这里开始 下面的代码是我理想的工作方式,但它显然不会。。。对最好的方法有什么想法吗 IEnumerable<Func<Tari

有没有可能有一个具有不同返回类型的可枚举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);
IEnumerable{CreateStandardTariff();},//返回typeof(StandardTariff)
a=>{CreateTariff();}//返回typeof(Tariff)takes StandardTariff
};
测试(行动);

公共无效测试(IEnumerable操作),其中T:class
{
T电流=零;
foreach(操作中的Func操作)
电流=动作(电流);
}

我正在使用3.5

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

您可以在输入和输出类型之间实现公共接口或抽象基类。e、 g.
ITariff

class Tariff : ITariff {}
class StandardTariff : ITariff {}
然后使用:

Func<ITariff, ITariff>
Func
Func<ITariff, ITariff>