Атрибут WCF Read DataMember Name - PullRequest
       5

Атрибут WCF Read DataMember Name

5 голосов
/ 18 января 2010

Привет, ребята. У меня очень простой класс, который называется человек.

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

Если я пытаюсь сериализовать или десериализовать, все прекрасно работает. В XML я вижу тег MyName, а в объекте, который я вижу в VS Intellisense, свойство Name. Теперь мне нужно получить доступ от объекта к сериализованному имени свойства. Например, я могу сделать это object.GetType (). GetProperty ("Name"); но если я попытаюсь сделать этот объект. GetType (). GetProperty («MyName») отражение говорит о том, что свойство не существует. Как я могу прочитать сериализованное имя свойства? Есть ли способ?

1 Ответ

3 голосов
/ 18 января 2010

Кажется, что единственный способ - получить доступ, используя отражение, к атрибутам свойства следующим образом:

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

Это работает как на клиенте, так и на сервере, без необходимости сериализации и десериализации объекта.

...