【发布时间】:2016-09-05 19:34:47
【问题描述】:
我使用 CodeDOM 从 XSD 模式文件创建了一些代码:
XmlSchemaImporter importer = new XmlSchemaImporter(schemas);
CodeNamespace code = new CodeNamespace(targetNamespace);
XmlCodeExporter exporter = new XmlCodeExporter(code);
foreach (XmlSchemaElement element in schema.Elements.Values)
{
XmlTypeMapping mapping = importer.ImportTypeMapping(element.QualifiedName);
exporter.ExportTypeMapping(mapping);
}
现在在我的后期处理中,我意识到这段代码将生成如下属性:
bool prop1Field;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=0)]
public bool Prop1
{
get
{
return prop1Field;
}
set
{
prop1Field = value;
}
}
但我希望生成器只生成字段。有没有办法做到这一点?我知道xsd.exe 在使用/f-argument 时也会产生字段。
编辑:之后我想用自动属性替换那些。要使用当前方法执行此操作,我必须从属性中删除支持字段及其在生成的代码中的所有出现。然而,如果 CodeDOM 首先生成了一个public 字段,我所要做的就是删除该字段,然后使用CodeSnippedTypeMember 创建一个同名的新属性,如this answer 所示。因此,我不需要搜索私有支持字段出现的代码并通过调用属性来替换它们。
【问题讨论】: