11

sgen用一吨的类型来对抗我的程序集。我想从序列化中排除 2 种类型。我似乎无法找到一种方法来做到这一点。

我看到sgen有一个/type开关来指定特定类型,但没有排除特定类型。

有没有办法从序列化中排除特定类型?

4

4 回答 4

3

除了将您希望排除的类型放在不同的程序集中之外,您不能从序列化程序生成中排除类型。

更新

其他海报提出了排除特定类型的其他可能性,根据您的用例具有不同的适用性。

于 2013-04-15T07:20:24.930 回答
1

您可以尝试通过将类标记为 来更改要从 Xml 序列化中排除的类的访问权限internal,然后 sgen.exe 应该跳过该类。

internal class NotToBeSerialized
{
    ...
}
于 2017-01-22T08:40:21.770 回答
1

为防止该类包含在 sgen 处理中,请确保它没有无参数构造函数。

正如对这个问题Why XML-Serializable class need a parameterless constructor的回答所解释的那样,序列化需要任何权限级别的无参数构造函数才能工作。将无参数构造函数设为私有是不够的,将 if 从 sgen 处理中排除。

于 2019-07-23T15:58:12.360 回答
-6

不确定您是否正在寻找这个,但您可以通过在类定义之前提及 [NonSerialized] 来将您自己的类排除在序列化之外。因此,如果您想排除特定类型,则必须从它继承并创建自己的类

[NonSerialized]
public class Point
{
    public int x, y;
}
于 2013-02-13T11:47:58.590 回答