C# 列表、SortedList、Dictionary按键存储对象并序列化它们?
我的要求: 我需要在类中存储一组对象, 对象必须可以通过其键访问,该键将是唯一的字符串,搜索/删除/替换必须像这样工作C# 列表、SortedList、Dictionary按键存储对象并序列化它们?,c#,.net,.net-4.0,C#,.net,.net 4.0,我的要求: 我需要在类中存储一组对象, 对象必须可以通过其键访问,该键将是唯一的字符串,搜索/删除/替换必须像这样工作 MyClass somethingNew = new MyClass(); // set someproperties on somethingNew somethingNew.Id = "FooBar"; // theOtherObject already contains an object with the key "FooBar" theOthe
MyClass somethingNew = new MyClass();
// set someproperties on somethingNew
somethingNew.Id = "FooBar";
// theOtherObject already contains an object with the key "FooBar"
theOtherObject.Members[somethingNew.Id] = somethingNew;
插入新对象时,不应进行排序
属性集合必须可以使用DataContractSerializer序列化为XML。
那么,为成员属性选择什么呢?
我想List和SortedList是不可能的,所以我将使用generic
Dictionary<string, MyClass>.
这是正确的决定吗?它支持序列化吗?在这种情况下,字典是正确的选项
是的,它是可序列化的。在这种情况下,字典是正确的选项
是的,它是可序列化的。
您可能要考虑的另一个类。它也是可序列化的 KeyedCollection类是基于IList通用接口的集合和基于IDictionary通用接口的集合的混合体。与基于IList通用接口的集合一样,KeyedCollection是一个索引项列表。与基于IDictionary泛型接口的集合类似,KeyedCollection具有与每个元素关联的键* *参考上述链接中的MSDN文档 编辑:需要注意的是KEYEDE集合是一个抽象类,在您开始使用它之前,您需要导出该类的前一个实例,即
您可能要考虑的另一个类。它也是可序列化的
KeyedCollection类是基于IList通用接口的集合和基于IDictionary通用接口的集合的混合体。与基于IList通用接口的集合一样,KeyedCollection是一个索引项列表。与基于IDictionary泛型接口的集合类似,KeyedCollection具有与每个元素关联的键* *参考上述链接中的MSDN文档 编辑:需要注意的一点是KeyedCollection是一个抽象类,在开始使用它之前,您需要派生该类的一个实例,例如MyClassCollection。-1 KeyedCollection是一个抽象类,不能直接实例化。它也适用于键直接嵌入值对象的特定情况,在这种情况下,值对象不是真的。是的,我知道它是一个抽象类。但他是根据他班上的新身份进行查找的。如果这个集合在整个应用程序中的许多地方都使用,那么创建一个专用的集合类MyClassCollection来处理对这些对象集合的访问就没有问题了。我读错代码了。您可能希望更新您的答案,以包含这样一个事实,即OP必须创建一个从KeyedCollection派生的自定义集合类型。@Justin Niessner-谢谢,我更新了我的答案以反映这一点。很高兴指出这个类。虽然我不会在本例中使用它,但它在许多其他情况下确实非常有用。Upvoting.-1 KeyedCollection是一个抽象类,不能直接实例化。它也适用于键直接嵌入值对象的特定情况,在这种情况下,值对象不是真的。是的,我知道它是一个抽象类。但他是根据他班上的新身份进行查找的。如果这个集合在整个应用程序中的许多地方都使用,那么创建一个专用的集合类MyClassCollection来处理对这些对象集合的访问就没有问题了。我读错代码了。您可能希望更新您的答案,以包含这样一个事实,即OP必须创建一个从KeyedCollection派生的自定义集合类型。@Justin Niessner-谢谢,我更新了我的答案以反映这一点。很高兴指出这个类。虽然我不会在本例中使用它,但它在许多其他情况下确实非常有用。向上投票。