当前位置:  开发笔记 > 编程语言 > 正文

C#3.0中的命名/可选参数?

如何解决《C#3.0中的命名/可选参数?》经验,为你挑选了3个好方法。

有没有办法将可选参数添加到C#3.0中,就像在C#4.0中一样?我得拥有这个功能,我等不及了!

编辑:

如果你知道一个解决方法/黑客来完成这个,也发布它.谢谢!



1> Matt Hamilto..:

您可以使用匿名类型和反射作为命名参数的变通方法:

public void Foo(T parameters)
{
    var dict = typeof(T).GetProperties()
        .ToDictionary(p => p.Name, 
            p => p.GetValue(parameters, null));

    if (dict.ContainsKey("Message"))
    {
        Console.WriteLine(dict["Message"]);
    }
}

所以现在我可以像这样打电话给Foo:

Foo(new { Message = "Hello World" });

......它会写下我的信息.

基本上我从传递的匿名类型中提取所有属性,并将它们转换为字符串和对象的字典(属性的名称及其值).



2> Andrew Arnot..:

总是有方法重载.:)



3> Dustin Campb..:

很不幸的是,不行.您将需要C#4.0编译器来支持此功能.如果您今天想在.NET平台上使用可选参数,可以尝试使用VB .NET或F#.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有