2010-10-29 2 views
0

У меня есть DataContract, который выглядит как:Serialize Частичное DataContract

[DataContract(Name = User.Root, Namespace = "")] 
    public class RegisterUser 
    { 
    [DataMember(Name = User.EmailAddress)] 
    public string EmailAddress { get; set; } 
    [DataMember(Name = User.UserName)] 
    public string UserName { get; set; } 
    [DataMember(Name = User.Password)] 
    public string Password { get; set; } 
    [DataMember(Name = User.FirstName)] 
    public string FirstName { get; set; } 
    [DataMember(Name = User.LastName)] 
    public string LastName { get; set; } 
    [DataMember(Name = User.PhoneNumber)] 
    public string PhoneNumber { get; set; } 
    [DataMember(Name = "RequestMessage")] 
    public string RequestMsg { get; set; } 
    } 

И я хотел бы получить элементы из него. Поэтому вместо <ROOT> <Element1/>...</ROOT>. Я бы просто хотел получить <Element1/> (для частичной проверки xsd).

Я думал, что я мог бы использовать эту функцию:

public static string Serialize<T>(T obj) 
{ 
    DataContractSerializer ser = new DataContractSerializer(obj.GetType()); 
    String text; 
    using (MemoryStream memoryStream = new MemoryStream()) 
    { 
    ser.WriteObject(memoryStream, obj); 
    byte[] data = new byte[memoryStream.Length]; 
    Array.Copy(memoryStream.GetBuffer(), data, data.Length); 
    text = Encoding.UTF8.GetString(data); 
    } 
    return text; 
} 

и просто передать его

string str = Serialize(test.EmailAddress); 

Это прекрасно работает, но XML выглядит следующим образом:

"<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">myemail.com</string>" 

Я потерял DataMember Информация. Как я могу сохранить это?

ответ