我sgen
用一吨的类型来对抗我的程序集。我想从序列化中排除 2 种类型。我似乎无法找到一种方法来做到这一点。
我看到sgen
有一个/type
开关来指定特定类型,但没有排除特定类型。
有没有办法从序列化中排除特定类型?
我sgen
用一吨的类型来对抗我的程序集。我想从序列化中排除 2 种类型。我似乎无法找到一种方法来做到这一点。
我看到sgen
有一个/type
开关来指定特定类型,但没有排除特定类型。
有没有办法从序列化中排除特定类型?
除了将您希望排除的类型放在不同的程序集中之外,您不能从序列化程序生成中排除类型。
更新
其他海报提出了排除特定类型的其他可能性,根据您的用例具有不同的适用性。
您可以尝试通过将类标记为 来更改要从 Xml 序列化中排除的类的访问权限internal
,然后 sgen.exe 应该跳过该类。
internal class NotToBeSerialized
{
...
}
为防止该类包含在 sgen 处理中,请确保它没有无参数构造函数。
正如对这个问题Why XML-Serializable class need a parameterless constructor的回答所解释的那样,序列化需要任何权限级别的无参数构造函数才能工作。将无参数构造函数设为私有是不够的,将 if 从 sgen 处理中排除。
不确定您是否正在寻找这个,但您可以通过在类定义之前提及 [NonSerialized] 来将您自己的类排除在序列化之外。因此,如果您想排除特定类型,则必须从它继承并创建自己的类
[NonSerialized]
public class Point
{
public int x, y;
}