C# XmlSerializer反序列化空元素的属性

C# XmlSerializer反序列化空元素的属性,c#,.net,xml,xml-serialization,C#,.net,Xml,Xml Serialization,我的XmlSerializer有问题。我尝试反序列化此文件: <MyClass Id="12"> <ProblemHere Value="8"/> <OtherElement>0</OtherElement> <fdp>NTM</fdp> </MyClass> 正如您所理解的,我想要的是将ProblemHere设置为它的值(这里是8)。有没有什么简单的方法可以做到这一点,或者我必须创建一

我的XmlSerializer有问题。我尝试反序列化此文件:

<MyClass Id="12">
    <ProblemHere Value="8"/>
    <OtherElement>0</OtherElement>
    <fdp>NTM</fdp>
</MyClass>

正如您所理解的,我想要的是将
ProblemHere
设置为它的值(这里是8)。有没有什么简单的方法可以做到这一点,或者我必须创建一个带有
int-Value
属性的
ProblemHere
类(对我来说似乎有些过分)?

据我所知,您必须创建一个单独的类。属性名为“ProblemHere”,但您希望属性名为“value”-我不知道.Net中有任何属性可以做到这一点


我通常更喜欢让VisualStudio生成一个基本XSD(稍后我可以调整),然后使用XSD.exe为其生成一组(反)序列化类

你可以这样做

private int _problem = 0;
public int ProblemHere { get {return _problem; }  set { _problem = value; } }

不漂亮,但可以工作是的,您必须创建一个类来表示该数据方面,即

public class Foo {
    [XmlAttribute]
    public int Value {get;set;}
}

public Foo ProblemHere { get; set; }

这是
XmlSerializer
处理所需结构的唯一方法。

您的另一个选择是手动执行序列化。这不会做任何有用的事情;只是将自动实现的属性替换为手动实现的属性
XmlSerializer
将以相同的方式处理它。
public class Foo {
    [XmlAttribute]
    public int Value {get;set;}
}

public Foo ProblemHere { get; set; }