我有一个用作设置类的类,该类被序列化为 XML 文件,然后管理员可以对其进行编辑以更改应用程序中的设置。(设置比App.config
允许的要复杂一些。)
我正在使用XmlSerializer
该类来反序列化 XML 文件,并且我希望它能够设置属性类,但我不希望使用该类/程序集的其他开发人员能够通过代码设置/更改属性。我可以使用 XmlSerializer 类来实现这一点吗?
添加更多细节:这个特定的类是一个集合,根据 FxCop,XmlSerializer
该类具有对反序列化只读集合的特殊支持,但我无法找到更多关于它的信息。这违反的规则的确切细节是:
返回集合的属性应该是只读的,这样用户就不能完全替换后备存储。用户仍然可以通过调用集合上的相关方法来修改集合的内容。请注意,XmlSerializer 类对反序列化只读集合具有特殊支持。有关详细信息,请参阅 XmlSerializer 概述。
这正是我想要的,但它是如何做到的呢?
编辑:好的,我想我在这里有点疯狂。就我而言,我所要做的就是在构造函数中初始化 Collection 对象,然后删除属性设置器。然后 XmlSerializable 对象实际上知道使用 Collection 对象中的 Add/AddRange 和 indexer 属性。以下确实有效!
public class MySettings
{
private Collection<MySubSettings> _subSettings;
public MySettings()
{
_subSettings = new Collection<MySubSettings>();
}
public Collection<MySubSettings> SubSettings
{
get { return _subSettings; }
}
}