2

こんにちは、私は次のようなことをしたいと思います:

public class Subscription
{    
    private Action _action;        //????

    public Subscription( Action a )//????
    {
        _action = a;               //????
    }
}


public class testklass
{        
     public testklass()
     {
         new Subscription(a); // just to show you how i want to submit
         new Subscription(b);
         new Subscription(c);
     } 

     private void a() { }
     private void b(string gg){}
     private void c(int i, string g) { } 
}

これを行う方法はありますか?そして、それは多くのパフォーマンスを犠牲にしますか?

どんなアドバイスでも大歓迎です

編集:

私はメディエーターを構築するつもりです

testklassSubscriptionオブジェクトを作成しMediator 、他のクラスがサブスクリプションに一致するオブジェクトを公開するときに、このすべての背後にあるロジックを実行する人に渡すサブスクライバーです。

しかし、現時点でActionは、コンテナオブジェクトに不明な数のパラメータを格納する方法だけが必要ですSubscription

4

3 に答える 3

3
public class Subscription<T>
    {
        private T _action;       

        public Subscription(T a)
        {
            _action = a;        
        }
    }

次のように使用できます。

Action<int> func1 = (q) => q += 1;
Action<int,int> func2 = (q,w) => q += w;
Subscription<Action<int>> s1 = new Subscription<Action<int>>(func1);
Subscription<Action<int,int>> s2 = new Subscription<Action<int,int>>(func2);

補足として、あなたが何をしようとしているのかわかりませんが、もっと良い方法があるかもしれません。

于 2013-01-24T15:32:58.173 に答える
0

次の構文内で、関数をさまざまなパラメーターの決定数に入れることができます

resultType functionName(params object[] list) {...}

そして、その関数を必要な数のパラメーターで使用します。

また、配列、リスト、オブジェクトなどの関数パラメーターを実装することもできます。次に、関数は引数を1つだけ取ります-パラメーターを保存するオブジェクト。

したがって、ご覧のとおり、それを行う方法はたくさんあります。

于 2013-01-24T15:31:15.490 に答える
0
 public class testklass
    {
        public testklass()
        {
            new Subscription(a); // just to show you how i want to submit
            new Subscription(() => b("someparam"));
            new Subscription(()=>c(10, "someparam"));
        }

        private void a() { }
        private void b(string gg) { }
        private void c(int i, string g) { }
    }
于 2013-01-24T15:24:34.930 に答える