gpt4 book ai didi

c# - 将 C# 属性添加到 wsdl.exe 生成的属性?

转载 作者:行者123 更新时间:2023-11-30 12:47:55 27 4
gpt4 key购买 nike

我有一个通过 wsdl.exe 自动生成的类,我需要将 [System.Xml.Serialization.XmlIgnoreAttribute()] 属性添加到其中一个属性,但我不能'不要直接修改类,因为它时不时会重新生成。

有什么办法吗?我已经尝试寻找具有继承、部分类和反射的解决方案,但没有成功。由于客户的限制,我坚持使用 .NET Framework 2.0。

(关于为什么我需要在此处执行此操作的更多详细信息:Prevent timezone conversion on deserialization of DateTime value,我在分部类中添加字符串属性)

编辑:请求的代码片段很简单:

[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://common.ws.model.plx.ids.it/")]
public partial class publication {
private System.DateTime dateFromField;

//[System.Xml.Serialization.XmlIgnoreAttribute()] I would like to add this
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public System.DateTime dateFrom {
get {
return this.dateFromField;
}
set {
this.dateFromField = value;
}
}

///// This method has been moved in the other partial class
//[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, ElementName = "dateFrom")]
//public string dateFromString
//{
// get
// {
// return XmlConvert.ToString(dateFrom, XmlDateTimeSerializationMode.RoundtripKind);
// }
// set
// {
// dateFrom = DateTimeOffset.Parse(value).DateTime;
// }
//}
}

最佳答案

您可以使用 postsharp 将缺少的属性动态添加到属性中。看看How to inject an attribute using a PostSharp attribute? .

它展示了如何将 XmlIgnore 属性应用于每个公共(public)属性,但您可以更改方面代码以在您的情况下具有不同的行为。

关于c# - 将 C# 属性添加到 wsdl.exe 生成的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15388298/

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