我有一个从电子表格动态创建的 xml 字符串。有两列经常被用户错误标记(是的,我们有一个大部分时间使用的模板)。
我将该字符串序列化为自定义对象。
我想解释常见的错误。我用我的序列化器尝试了以下操作:
[XmlElement("MATTYPE")]
[XmlElement("MATLTYPE")]
public string MATLTYPE { get; set; }
[XmlElement("DEPTID")]
[XmlElement("WORKCENTER")]
public string WORKCENTER { get; set; }
理想情况下,<MATTYPE>
OR <MATLTYPE>
将映射到MATLTYPE
字符串。与<DEPTID>
OR <WORKCENTER>
映射相同WORKCERNTER
这两个元素不会存在于同一个文件中,但都可能存在。
这可以轻松完成吗?
更新:
我试过这个:
[XmlElement("MATTYPE")]
public string _Mttype { get; set; }
[XmlElement("MATLTYPE")]
public string _Matltype { get; set; }
public string MATLTYPE { get { return GetMATLTYPE(); } set { matltp = value; } }
public string GetMATLTYPE()
{
var mistakes = new [] {_Mttype, _Matltype};
matltp = mistakes.FirstOrDefault(x => !string.IsNullOrEmpty(x));
return matltp;
}
更新 2:
我拥有的“最佳”解决方案是设置提供的任何一个,然后确保在我执行这样的foreach
循环时适用于我需要的字符串:
row.WORKCENTER = row.WORKCENTER ?? row.DEPTID;
如果我不能从一开始就拦截它,我想最好将此更改应用于集合中的每个对象,而不是逐行。