我有一个后端类,必须引发一个没有参数的事件。 MethodInvoker具有所需的签名,但在后端类中使用它感觉有点奇怪,因为它在System.Windows.Forms中定义。在.Net Framework中的其他名称空间中是否有另一个具有此签名的委托?如果没有,你认为我应该自己定义一个具有该签名的委托,还是使用MethodInvoker?
答案 0 :(得分:1)
如果你可以使用.NET 3.5,那就是Action
委托。如果没有,那么您可以随时在Action
类或类似内容中声明(+任何其他Func
或Utils
个代表):
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);
等...
请注意,.NET 2已包含void Action<T>(T arg)
委托,但没有任何其他委托
答案 1 :(得分:1)
如果您使用的是.NET 2.0:
定义您自己的委托类型。在我看来,仅针对这种简单类型引用程序集并不是一个好主意。
许多框架也这样做。即使在mscorlib(2.0)中也可能存在其中一些。但是,它们可能位于更深层的命名空间中,其使用可能与您的课程一起令人费解。
因此,在.NET 3.5之外使用您自己的委托类型。