首页 > 解决方案 > 有没有办法在泛型方法中提供任意数量的类型?

问题描述

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

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).

标签: c#

解决方案


我会这样做:

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

并以这种方式调用它,使用封闭变量而不是尝试单独传递参数:

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

这具有类型安全的额外优势,但params object[]不是,并且还会导致结构类型的装箱。


推荐阅读