gpt4 book ai didi

c# - 如何将 XML 文件反序列化为具有只读属性的类?

转载 作者:数据小太阳 更新时间:2023-10-29 02:55:38 25 4
gpt4 key购买 nike

我有一个类用作设置类,它被序列化为一个 XML 文件,然后管理员可以编辑该文件以更改应用程序中的设置。 (设置比 App.config 允许的要复杂一些。)

我正在使用 XmlSerializer 类反序列化 XML 文件,我希望它能够设置属性类,但我不希望其他开发人员使用该类/程序集能够通过代码设置/更改属性。我可以使用 XmlSerializer 类实现这一点吗?

要添加更多细节:这个特定的类是一个集合,根据 FxCop 的说法,XmlSerializer 类对反序列化只读集合有特殊的支持,但我还没有找到任何有关它的更多信息。违反规则的具体细节是:

Properties that return collections should be read-only so that users cannot entirely replace the backing store. Users can still modify the contents of the collection by calling relevant methods on the collection. Note that the XmlSerializer class has special support for deserializing read-only collections. See the XmlSerializer overview for more information.

这正是我想要的,但它是怎么做到的呢?

编辑:好吧,我想我在这里有点疯狂。在我的例子中,我所要做的就是在构造函数中初始化 Collection 对象,然后删除属性 setter 。然后 XmlSerializable 对象实际上知道使用 Collection 对象中的 Add/AddRange 和索引器属性。以下实际上有效!

public class MySettings
{
private Collection<MySubSettings> _subSettings;
public MySettings()
{
_subSettings = new Collection<MySubSettings>();
}

public Collection<MySubSettings> SubSettings
{
get { return _subSettings; }
}
}

最佳答案

您必须使用可变列表类型,例如 ArrayList(或 IList IIRC)。

关于c# - 如何将 XML 文件反序列化为具有只读属性的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/133772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com