c# - 如何为方法创建命名 `params` 参数?

标签 c# .net

C# 有一个很棒的 params用于将任意数量的参数传递给函数的关键字,例如 String.Format() 。但是如果我需要传递命名参数(键值对)怎么办?最好的方法是什么(我正在寻找调用方的简短语法)?

  • func(new Dictionary<string, object> { { "param1", val1 }, { "param2", val2 } }太麻烦了
  • func(param1 => val1, param2 => val2)func(new { param1 = val1, param2 = val2 })但看起来像是语言滥用,这些功能不应该这样使用
  • dynamic我可以解析可选参数名称 func(param1: val1, param2: val2) 的对象这看起来是一个很好的解决方案,但不适用于常见的对象方法

最佳答案

您可以创建一些函数重载。当调用方只有 1 或 2 个参数时,这些重载将封装 Dictionary 的使用

public void Foo (string paramA, object valueA)
{
   this.Foo(new Dictionary<string, object> { { paramA, valueA } });
}

public void Foo (string paramA, object valueA, string paramB, object valueB)
{
   this.Foo(new Dictionary<string, object> { { paramA, valueA },{ paramB, valueB } });
}

public void Foo (Dictionary<string, object> args)
{
}

关于c# - 如何为方法创建命名 `params` 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28740075/

相关文章:

c# - Automapper Entity Framework 外键为空

c# - 通过 WCF 发送大型 Xml 字符串的最有效解决方案?

c# - 单核处理器上的 PLinq

c# - LINQ 使用 .ToDictionary 而不使用 .Select

c# - "System.Web.UI.MasterPage does not contain a definition..."ASP.NET 错误

c# - 如何格式化 DateTimeOffset 使其时区偏移量中不包含冒号?

c# - 有 {} 运算符吗?

c# - 将方法的名称作为参数传递

c# - 如何将字典参数传递给 web-api 方法?

.net - 我可以使用 UriTemplate 将非字符串传递给 WCF RESTful 服务吗?