0

これは私のシナリオです:

Class Test  
{  
    public int TestMethod(string s)  
    {
        return s.length; 
    }  

    public void TestInvoker()  
    {    
        var result = Invoker.Call( (new Test()).TestMethod,"String");  
    }  
}

Class Invoker  
{  
    public static object Call(Delegate method, object input) {... Do stuff ...} 

}  

これどうやってするの?「TestMethod」はデリゲートではないため、Func<> で実行できますが、インボーカーを使用するたびに Func<> デリゲートを開始することは避けたいと考えています。

これは可能ですか?

4

1 に答える 1

2

これは可能ですが、メソッドが具体的なデリゲート型を受け入れる場合に限られます。それ自体ではありませんDelegate

メソッドを次のように変更した場合

public static TReturn Call<TInput, TReturn>(Func<TInput, TReturn> method, TInput input)

、うまくいきます。


より正確には、C# には、メソッド グループから一致するデリゲート型への暗黙的な変換があります。

于 2013-01-22T20:58:19.877 に答える