有没有办法像 C# 4.0 一样向 C# 3.0 添加可选参数?我一定要拥有这个功能,我已经等不及了!
Edit:
如果您知道实现此目的的解决方法/技巧,也请发布它。谢谢!
您可以使用匿名类型和反射作为命名参数的解决方法:
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" });
...它会写我的信息。
基本上,我从传递的匿名类型中提取所有属性,并将它们转换为字符串和对象的字典(属性的名称及其值)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)