有没有办法将可选参数添加到C#3.0中,就像在C#4.0中一样?我得拥有这个功能,我等不及了!
编辑:
如果你知道一个解决方法/黑客来完成这个,也发布它.谢谢!
您可以使用匿名类型和反射作为命名参数的变通方法:
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" });
......它会写下我的信息.
基本上我从传递的匿名类型中提取所有属性,并将它们转换为字符串和对象的字典(属性的名称及其值).
总是有方法重载.:)
很不幸的是,不行.您将需要C#4.0编译器来支持此功能.如果您今天想在.NET平台上使用可选参数,可以尝试使用VB .NET或F#.