有没有一种方法可以在泛型方法中提供任意数量的类型?

时间:2020-01-16 18:21:32

标签: c#

我的意思是我有一个这样的方法:

public static void CrossThreadUpdate<T1, T2, T3>(this Form form, Action<T1, T2, T3> action, object[] parms)
{
    form.BeginInvoke(action, parms);
}

但是我不想为<T1>, <T1, T2>, <T1, T2, T3>, <T1, T2, T3, T4>, etc.创建相同的功能,我想像的是与Foo(params string[] bar)类似的东西。

1 个答案:

答案 0 :(得分:5)

我会这样做:

public static void CrossThreadUpdate(this Form form, Action action) 
{
    form.BeginInvoke(action);
}

并使用https://api.kraken.com/0/public/OHLC?pair=btcusdt&interval=1440&since=1483228800进行调用,而不是尝试分别传递参数:

this.CrossThreadUpdate( () => someAction(param1, param2, param3) );

这还具有类型安全的优点,而params object[]不是,并且还会导致对结构类型进行装箱。