5

我有一个非常简单的类叫做人。

public class Person{
   [DataMember(Name="MyName")]
   public string Name { get;set;}
}

如果我尝试序列化或反序列化,一切都很好。在 XML 中,我可以看到一个名为“MyName”的标签,而在使用 VS Intellisense 的对象中,我可以看到一个名为 Name 的属性。

我现在需要的是从对象访问属性的序列化名称。

例如,我可以做,object.GetType().GetProperty("Name");但如果我尝试做object.GetType().GetProperty("MyName"),反射说该属性不存在。如何读取属性的序列化名称?有办法吗?

4

1 回答 1

3

似乎唯一的方法是使用反射以这种方式访问​​属性的属性:

var att = myProperty.GetType().GetAttributes();
var attribute = property.GetCustomAttributes(false)[0] as DataMemberAttribute;
Console.WriteLine(attribute.Name);

这适用于客户端和服务器,无需序列化和反序列化对象。

于 2010-01-18T20:34:43.077 回答