2

在我将一个类从 xml 更改为 xml 后,我在尝试将其序列化为 xml 时遇到了public问题internal。在我更改保护级别之前它工作正常,所以我正在寻找一种方法来绕过仅限公众的限制。

我希望它是内部的原因是我将类移到了一个库中,它在库之外没有用。

一个简单的类布局示例:

[Serializable]
internal class InternalSerializable
{
    [XmlAttribute]
    public int Foo = 5;

    public InternalSerializable()
    {
    }
}

通常XmlSerializer是自动生成并具有随机程序集名称,因此我尝试使用sgen.exe预生成 XmlSerializer 并使用以下方法引用它:

[assembly: InternalsVisibleTo("FileFormats.XmlSerializers")]

但是当使用 switch 运行 sgen 时,/verbose它说只能处理公共类型。

所以我想知道是否有人知道如何欺骗 sgen 处理内部类型或以其他方式序列化内部类?

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

4

1 回答 1

0

Hackish 但您可以将您的课程公开并使用EditorBrowsable属性对其进行标记以将其隐藏在智能感知中。

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

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

于 2011-06-10T12:52:13.673 回答