我正在开发一个 API,它将从文件中读取字符串值并允许类型转换。我还需要它提供一种将给定字符串值“映射”到所需类型的特定值的方法。这看起来像这样:
int val = myObject.getValue<int>("FieldName", { { "", 0 }, { "INF", int.MaxValue } });
字段名称在那里,以便在发生错误时可以检索它。这对这个例子很重要,因为该函数需要采用不相关的第一个参数。
但是,我无法想出一种优雅且类型安全的语法来提供此功能(以上内容基于集合初始值设定项,只有在我将 new FieldValueMappingCollection<int> { ... }
插入其中时才有效)。
所以,我知道的选项是:
myObject.getValue<int>("FieldName", new FieldValueMappingCollection<int> { { "", 0 }, { "INF", int.MaxValue } });
或
myObject.getValue<int>("FieldName", "", 0, "INF", int.MaxValue);
其中 getValue 有 params object[]
在其签名中。
一定有更好的方法来做到这一点,对吧?
最佳答案
更好的方法是使用 Dictionary<String, Int32>
管他呢。在您的类(class)中设置一次,然后只需将字典传入即可。由于您正在制作一个 API,因此这是一种比使用元组更清晰和更具表现力的方式来声明您的意图。为这些类型的操作构建了一个字典,您的用户应该能够轻松理解该方法的意图。元组更难理解,尤其是当您处理简单的键值映射时。
此外,如果您想动态初始化,它可以使初始化更好: http://msdn.microsoft.com/en-us/library/bb531208.aspx
关于c# - 将成对的键->值映射传递给函数的优雅语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3389560/