有没有办法像 C# 4.0 那样向 C# 3.0 添加可选参数?我一定要拥有这个功能,我等不及了!
编辑:
如果您知道实现此目的的解决方法/技巧,也请将其发布。谢谢!
最佳答案
您可以使用匿名类型和反射作为命名参数的解决方法:
public void Foo<T>(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# - C# 3.0 中的命名/可选参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/622880/