3

我们正在尝试将构建在 .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”,它只是通过使用代表的方式。提前致谢。

4

4 回答 4

12
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);
于 2013-06-07T10:48:13.997 回答
0

具体来说:

public delegate string SomeDelegate(object someObject);

private SomeDelegate someName1;
private static SomeDelegate someName2;

internal SomeDelegate someProperty
{
      get { return someName1?? (someName1= someName2); }
      set { someName1= value; }
}
于 2013-06-07T10:48:56.013 回答
0

我相信您可以使用从 .Net 3.5定义和代表的LinqBridgeActionFunc

于 2013-06-07T10:50:07.787 回答
0

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

    private delegate void SomeName(object arg1, string arg2);
    SomeName someName1, someName2;

    internal SomeName SomeProperty
    {
        get
        {
            return someName1 ?? (someName1 = someName2);
        }
        set
        {
            someName1 = value;
        }
    }
于 2013-06-07T11:00:11.920 回答