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

有没有办法做到这一点?它会花费很多性能吗?

任何意见是极大的赞赏

编辑:

我要找一个调解员

testklass只是一个订阅者,当另一个类发布与订阅匹配的对象时,创建一个Subscription对象并将其移交给执行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
 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 回答
0

您可以使用以下语法使您的函数获得各种参数的行列式计数

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

然后将该函数与您想要的任意数量的参数一起使用。

您也可以实现函数参数,如数组、列表或对象。然后你的函数将只接受一个参数 - 存储你的参数的对象。

所以,正如你所看到的,有很多方法可以做到这一点。

于 2013-01-24T15:31:15.490 回答