gpt4 book ai didi

c# - XmlSerializer, "Specified"后缀和 IReflect

转载 作者:太空狗 更新时间:2023-10-29 20:29:06 26 4
gpt4 key购买 nike

我发现如果一个可序列化的 Field/Property 有一个相应的 Boolean 类型的字段,其名称为 Field/Property如果名称带有“Specified”后缀,则 XmlSerializer 有条件地将 Field/Property 从序列化过程中排除。不错!

所以,我想避免定义那些字段,并在运行时动态添加它们...

阅读 this , 我发现了一个有趣的界面 IReflect ,我可以使用它来“模拟”XmlSerializer 实例用来排除某些字段的动态字段。

这行得通吗?

最佳答案

我将扩展Martin Peck 的答案。您可以避免序列化带有“指定”后缀的字段/属性。您应该在您的类中定义“*指定”属性并将 [XmlIgnoreAttribute()] 应用于它们。

这是一个例子:

[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://yournamespace.com")]
public partial class YourObject
{
private long sessionTimeoutInSecondsField;

private bool sessionTimeoutInSecondsFieldSpecified;

public long sessionTimeoutInSeconds
{
get
{
return this.sessionTimeoutInSecondsField;
}
set
{
this.sessionTimeoutInSecondsField = value;
}
}

[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool sessionTimeoutInSecondsSpecified
{
get
{
return this.sessionTimeoutInSecondsFieldSpecified;
}
set
{
this.sessionTimeoutInSecondsFieldSpecified = value;
}
}
}

关于c# - XmlSerializer, "Specified"后缀和 IReflect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4261038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com