2010-01-18 13 views
5

Merhaba Guys Kişiden çok basit bir sınıf var.WCF Okuma VerileriArama Ad özniteliği

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

Seri hale getirmeye veya serileştirmeye çalışırsam her şey harika çalışır. XML'de "MyName" adında bir etiket ve VS Intellisense ile gördüğüm nesnede Name adında bir özellik görebiliyorum. Şimdi ihtiyacım olan şey, nesneden, mülkün serileştirilmiş isminin girilmesidir. Örneğin, bu object.GetType(). GetProperty ("Name"); ancak bu object.GetType(). GetProperty ("BenimAdı") yapmaya çalışırsanız, yansıma özelliği olmadığını gösterir. Mülkün serileştirilmiş adını nasıl okuyabilirim? Bir yolu var mı?

+0

Bunu servis tarafında mı yoksa istemci tarafında mı yapmaya çalışıyorsunuz? –

+0

İstemci tarafında ve DataContractSerializer ile mülkün özelliğini okumak için bir yol yoktur. XDocument ve Linq ile de denedim. Baska öneri? – Raffaeu

cevap

3

Tek yolu yansıma kullanarak erişim gibi görünüyor, bu şekilde özelliğinin niteliklerinin: serialize gerek kalmadan bu hem istemci ve sunucu üzerinde çalışan

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

ve serisini nesne.

+1

bazı null denetimi sırasına göre olabilir, cevabınız sadece bir öznitelik varsayar, şu şekilde kontrol etmeyi deneyin: 'var attribute = (DataMemberAttribute) propertyInfo.GetCustomAttributes (typeof (DataMemberAttribute), false) .FirstOrDefault(); \t \t \t \t if (nitelik = null!) \t \t \t \t \t name = attribute.Name; ' – Myster