2012-02-03 67 views
0

是否有可能具有不同返回類型的Enumerable Func,我認爲答案是否定的,但是如何能夠支持這一點。我的代碼目前看起來像這樣,但我需要能夠傳遞不同的返回類型作爲輸入類型,反之亦然。我想要一個結構,其中前面的操作返回類型形成下一個操作的輸入。具有不同返回類型的枚舉Func

  • 動作1取A和返回乙
  • 動作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

回答

0

你可以使用動態對象作爲輸入和輸出類型

1

你可以實現一個共同的接口或抽象基類在輸入和輸出類型之間。例如ITariff

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

,然後使用:

Func<ITariff, ITariff>