2012-02-03 21 views
0

戻り値の型が異なる列挙型Funcを持つことは可能ですか?答えは「いいえ」ですが、どのようにこれをサポートできるのでしょうか?私のコードは現在このように見えますが、私は入力型として異なる戻り型を渡すことができなければなりません。私は、前のアクションの戻り値の型が次のアクションへの入力を形成する構造を持っています。異なる戻り値の型を持つ列挙型Func

  • アクション1はAを取り、B
  • を返すアクション2は、アクション3はCを取り、テスト命令を取り、仮想マシンのD

イム構築何かを返すBを受け取り、C

  • を返しますしかし、私はここから進展する方法が少し分かりません。

    以下のコードは、私が理想的にはうまく動作するようにしていますが、明らかにベスト・アプローチの考えはありますか?

    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); 
    } 
    

    私はあなたが一般的に実装することができますが、入力および出力の種類として

  • 答えて

    0

    を使用しています入力型と出力型の間のインタフェースまたは抽象基本クラス例えばITariff

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

    、その後は使用:

    Func<ITariff, ITariff> 
    
    1

    ダイナミックまたはオブジェクトを使用することができます3.5

    関連する問題