WCF 读取数据成员名称属性

标签 wcf datamember

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

public class Person{
   [DataMember(Name="MyName")]
   public string Name { get;set;}
}
如果我尝试序列化或反序列化,一切都很好。在 XML 中,我可以看到一个名为“MyName”的标记,在我使用 VS Intellisense 看到的对象中,我可以看到一个名为 Name 的属性。
我现在需要的是从对象访问属性的序列化名称。
例如,我可以做 object.GetType().GetProperty("Name");但如果我尝试做 object.GetType().GetProperty("MyName") ,反射说该属性不存在。如何读取属性的序列化名称?有办法吗?

最佳答案

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

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

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

关于WCF 读取数据成员名称属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2088444/

相关文章:

c# - 没有 .svc 的 WCF 服务相对 uri

c# - 如何在 WCF 中使用缓存

serialization - 将 DataMember 添加到 DataContract 的不同命名空间

C# - 将私有(private)属性序列化为属性(数据协定)

c++ - 从 Vector 生成类数据成员

c# - 如何在返回的类上实现接口(interface)并保留其数据?

c# - 使用 Cookie 或其他方法保护 WFC/JSON 上的数据 session

WCF 最大并发调用数

.net - 将 DataMember 添加到 WCF 中的现有 DataContract

c++ - 标准说,我们可以像类模板和函数模板一样定义静态数据成员模板,但具体如何定义呢?