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

标签 c# c#-3.0 c#-4.0

有没有办法像 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/

相关文章:

c# - 属性名称 'ProductId' 已定义

c# - 在 C# 中使用分区在远程服务器上激活 COM+

javascript - 如何在 ASP.NET 文本框中只允许信用卡/借记卡号码格式

c# - 如何获取网格上某个位置的坐标?

linq - 将 Linq 与访问数据库一起使用

c# - 参数类型 'void' 不可分配给参数类型 'System.Action'

sql - 存储过程sql中的日期转换

c# - C# 中的守卫对象

c# - 第三方应用程序无法读取新创建的 .text 文件中的数据

c# - 为什么表达式树不能包含命名参数规范?