将内部类序列化为xml
本文关键字:xml 序列化 内部类 | 更新日期: 2023-09-27 17:59:02
在将类从public
更改为internal
后,尝试将其xml序列化为xml时遇到了问题。在我改变保护级别之前,它运行良好,所以我正在寻找一种绕过仅限公众使用的限制的方法。
我希望它是内部的原因是我把类移到了库中,而它在库外没有用处。
类布局的一个简单示例:
[Serializable]
internal class InternalSerializable
{
[XmlAttribute]
public int Foo = 5;
public InternalSerializable()
{
}
}
通常XmlSerializer
是自动生成的,并且有一个随机的程序集名称,所以我尝试使用sgen.exe
预生成XmlSerializer并使用引用它
[assembly: InternalsVisibleTo("FileFormats.XmlSerializers")]
但当使用/verbose
开关运行sgen时,它表示只能处理公共类型。
所以我想知道是否有人知道如何欺骗sgen处理内部类型或以其他方式序列化内部类?
编辑:我有很多类都有这个问题,所以我不想重写整个
Hackish,但您可以将您的类公开,并用EditorBrowsable属性标记它,以对intellisense隐藏它。
[EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[Serializable]
public class InternalSerializable
在C#中,EditorBrowseable仅适用于已编译的程序集:在Visual Studio for C#中从fluent接口类intellisense隐藏GetHashCode/Equals/ToString?