如何从序列化中排除特定类型?

时间:2012-07-19 21:41:17

标签: .net serialization .net-4.0 sgen

我用一公吨的类型对我的程序集运行sgen。我想从序列化中排除2种类型。我似乎无法找到办法。

我看到sgen有一个/type开关来指定特定类型,但没有任何内容可以排除特定类型。

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

如对问题Why XML-Serializable class need a parameterless constructor的回答所解释,序列化需要一个具有较少权限级别的参数较少的构造函数才能起作用。 将无参数的构造函数设为私有是不够的,以排除是否需要进行sgen处理。

答案 2 :(得分:-1)

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

internal class NotToBeSerialized
{
    ...
}

答案 3 :(得分:-6)

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

[NonSerialized]
public class Point
{
    public int x, y;
}