我有一个字典数据结构,必须使用WCF传递它。为此,我使用get和set方法创建了一个member属性。我基本上可以实现相同的功能,而该属性可以是:

IDictionary<keyType, valueType>


或一个

IList<KeyValuePair<keyType, valueType>>


我看不出有足够的理由选择一个。我能想到的一种温和的原因:

IDictionary-阅读代码的人会认为IDictionary更有意义,因为数据结构是字典,但是就通过WCF传递的内容而言,它们都是相同的。

谁能想到选择IList的理由?如果没有,我将选择IDictionary。

最佳答案

根据用途而不是根据实现来设计接口。

如果类的使用者需要遍历整个集合,请使用IEnumerable。如果他们应该能够修改结果,并且需要基于索引的访问,请返回IList。如果他们需要特定的项目,并且有一个有用的键值,则返回IDictionary

也以这种方式编写您的内部代码:)

关于c# - IList <KeyValuePair> vs IDictionary在WCF中用作[DataMember],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4093582/

10-11 00:59