【问题标题】:How to simulate a "Func<(Of <(TResult>)>) Delegate" in .NET Framework 2.0?如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?
【发布时间】:2009-12-02 09:15:08
【问题描述】:

我尝试在 VB.NET 和 .NET Framework 2.0 中使用来自 CodeProject article 的类。

除了这一行 Private _workerFunction As Func(Of TResult) 和方法头 Public Sub New(ByVal worker As Func(Of TResult)) 之外,所有内容似乎都可以编译。

我可以在 MSDN 上找到这些新的委托(Func(Of ...) 受 .NET 3.5 支持。

如何重写它以在 .NET 2.0 中工作?

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    幸运的是,.NET 2.0 已经支持泛型,因此您可以使用相同的签名创建自己的委托:

    public delegate T Func<T>();
    

    【讨论】:

      【解决方案2】:

      正如 Konamiman 所说,您可以非常轻松地声明自己的委托类型。在我的"versions" page 上,我已经声明了它们,所以你可以剪切和粘贴它们:

      public delegate void Action();
      public delegate void Action<T1, T2>(T1 arg1, T2 arg2);
      public delegate void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3);
      public delegate void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
      public delegate TResult Func<TResult>();
      public delegate TResult Func<T, TResult>(T arg);
      public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2);
      public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3);
      public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
      

      (我没有避免在此处滚动,因为您可能不希望 IDE 中出现换行符。请注意,Action&lt;T&gt; 是 .NET 2.0 的一部分,因此上面没有。)

      【讨论】:

      • @gt:是的,我没有在它周围加上反引号。已修复,谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      • 2022-01-13
      相关资源
      最近更新 更多