将内部类序列化为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处理内部类型或以其他方式序列化内部类?

编辑:我有很多类都有这个问题,所以我不想重写整个

将内部类序列化为xml

Hackish,但您可以将您的类公开,并用EditorBrowsable属性标记它,以对intellisense隐藏它。

[EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[Serializable]
public class InternalSerializable

在C#中,EditorBrowseable仅适用于已编译的程序集:在Visual Studio for C#中从fluent接口类intellisense隐藏GetHashCode/Equals/ToString?