【问题标题】:Replacing Func with delegates C#用委托 C# 替换 Func
【发布时间】:2013-06-03 15:35:30
【问题描述】:

我们正在尝试将构建在 .NET 3.5 中的应用程序迁移到 2.0(原因是让我们的 exe 在没有 3.5 的 XP 等旧机器上运行)

虽然这样做,但现在一切都停留在一个主要问题上,用老式的委托替换 Func(因为 Func 在 2.0 上不可用)。要替换的代码是这样的。

private Func<object, string> someName1;
private static Func<object, string> someName2;

internal Func<object, string> someProperty
{
      get { return someName1?? (someName1= someName2); }
      set { someName1= value; }
}

请一些人帮助我创建“someProperty”,就像它只使用委托一样。 提前致谢。

【问题讨论】:

    标签: c# .net .net-3.5 .net-2.0


    【解决方案1】:
    public delegate void Action();
    public delegate void Action<T>(T t);
    public delegate void Action<T, U>(T t, U u);
    public delegate void Action<T, U, V>(T t, U u, V v);
    
    public delegate TResult Func<TResult>();
    public delegate TResult Func<T, TResult>(T t);
    public delegate TResult Func<T, U, TResult>(T t, U u);
    public delegate TResult Func<T, U, V, TResult>(T t, U u, V v);
    public delegate TResult Func<T, U, V, W, TResult>(T t, U u, V v, W w);
    

    【讨论】:

    • 请注意,.NET 2.0 didAction&lt;T&gt; 委托只有一个泛型类型参数(您的第二行)。所有其他的都“丢失”了,所以可以在用户代码中引入。
    【解决方案2】:

    具体来说:

    public delegate string SomeDelegate(object someObject);
    
    private SomeDelegate someName1;
    private static SomeDelegate someName2;
    
    internal SomeDelegate someProperty
    {
          get { return someName1?? (someName1= someName2); }
          set { someName1= value; }
    }
    

    【讨论】:

      【解决方案3】:

      我相信您可以使用 LinqBridge,它定义了来自 .Net 3.5 的 ActionFunc 代表

      【讨论】:

        【解决方案4】:

        .Net2.0 带有委托的代码如下所示:

            private delegate void SomeName(object arg1, string arg2);
            SomeName someName1, someName2;
        
            internal SomeName SomeProperty
            {
                get
                {
                    return someName1 ?? (someName1 = someName2);
                }
                set
                {
                    someName1 = value;
                }
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-06
          • 2015-07-08
          相关资源
          最近更新 更多