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)
.
解决方案
我会这样做:
public static void CrossThreadUpdate(this Form form, Action action)
{
form.BeginInvoke(action);
}
并以这种方式调用它,使用封闭变量而不是尝试单独传递参数:
this.CrossThreadUpdate( () => someAction(param1, param2, param3) );
这具有类型安全的额外优势,但params object[]
不是,并且还会导致结构类型的装箱。
推荐阅读
- reactjs - 如何在 BigRock 中托管 Laravel-Mix 应用程序?
- amazon-web-services - logstash 是从 s3 下载日志还是在不下载的情况下读取?
- ios - 调整大小时,SwiftUI Image 组件会缩小
- java - 如何在调用 postgresql 函数时获得动态结果集
- batch-file - 如何修复 RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters 1, True 不是每次都更新
- firebase - 使用 Firebase 电子邮件验证的动态/深度链接?
- port - nmap默认扫描的1000个端口是多少?
- android - 在 Android-ndk 中,如何在调用 dlclose( ) 时调用 _fini( )?
- php - 如何根据首字母对数据进行排序
- ruby-on-rails - 为什么 elasticserach-rails 突然提高 Faraday::ConnectionFailed (执行过期)?