C# 在后端类中使用MethodInvoker

C# 在后端类中使用MethodInvoker,c#,delegates,C#,Delegates,我有一个后端类,它必须引发一个没有参数的事件。MethodInvoker具有所需的签名,但在后端类中使用它感觉有点奇怪,因为它是在System.Windows.Forms中定义的。在.Net Framework的其他名称空间中是否有另一个具有此签名的委托?如果没有,您认为我应该自己定义一个带有该签名的委托,还是使用MethodInvoker?如果您可以使用.NET 3.5,那么就有委托了。如果不是,那么您可以在Utils类或类似类中声明(+您想要的任何其他Action或Func委托): publ

我有一个后端类,它必须引发一个没有参数的事件。MethodInvoker具有所需的签名,但在后端类中使用它感觉有点奇怪,因为它是在System.Windows.Forms中定义的。在.Net Framework的其他名称空间中是否有另一个具有此签名的委托?如果没有,您认为我应该自己定义一个带有该签名的委托,还是使用MethodInvoker?

如果您可以使用.NET 3.5,那么就有委托了。如果不是,那么您可以在
Utils
类或类似类中声明(+您想要的任何其他
Action
Func
委托):

public delegate void Action();
public delegate void Action<T1, T2>(T1 arg0, T2 arg1);

public delegate TResult Func<T1, TResult>(T1 arg0);
public delegate TResult Func<T1, T2, TResult(T1 arg0, T2 arg1);
公共委托无效操作();
公开委托无效操作(T1 arg0,T2 arg1);
公共委托TResult Func(T1 arg0);

公共委托TResult Func如果您使用的是.NET 2.0:
定义您自己的委托类型。在我看来,仅为如此简单的类型引用程序集不是一个好主意

许多框架也这样做。即使在mscorlib(2.0)中也可能有一些。但是,它们可能位于更深的名称空间中,与类结合使用可能会让人感到困惑


因此,请在.NET 3.5之外使用您自己的委托类型。

不幸的是,我使用的是.NET Framework 2.0。您对后端类中MethodInvoker的使用有何总体看法?我将在一个公共名称空间中创建您自己的.NET3.5委托版本;这样,当您这样做时,很容易转换为3.5。MethodInvoker是为winforms跨线程调用而显式设计的;将其用作一般方法在概念上似乎是错误的。@thecoop您能给我指一个显示.NET2解决方案的示例吗?谢谢