是否可以使用具有不同返回类型的Enumerable Func,我认为答案是否定的,但是如何支持这一点。我的代码目前看起来像这样,但我需要能够将不同的返回类型作为输入类型传递,反之亦然。我希望有一个结构,其中先前的操作返回类型形成下一个操作的输入。
我正在构建一个需要测试指令的虚拟机,但我不确定如何从这里开始。
下面的代码是我理想的工作方式,但它显然不会......对最佳方法的任何想法?
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
答案 0 :(得分:1)
您可以在输入和输出类型之间实现公共接口或抽象基类。例如ITariff
class Tariff : ITariff {}
class StandardTariff : ITariff {}
然后使用:
Func<ITariff, ITariff>
答案 1 :(得分:0)
您可以使用动态或对象作为输入和输出类型