2012-07-26 2 views
0

ReadOnly 특성으로 장식 된 .net 4 클래스가 있습니다. .NET Compact 3.5 프로젝트에서이 클래스를 serialize하려하지만 오류가 발생합니다. "IpSettings 유형을 반영하는 동안 오류가 발생했습니다" .NET CF에는 사용자 지정 특성이 포함되지 않습니다. ,하지만이 특성을 serialize 할 필요가 없습니다. 속성 직렬화를 건너 뛸 수있는 방법이 있습니까? 감사합니다, 알렉스 .net compact framework deserialization

 
public class IpSettings 
    { 
     [ReadOnly(true)] 
     public string IP { get; set; }

public string Mask { get; set; } public string Gateway { get; set; } public string DNS1 { get; set; } public string DNS2 { get; set; } }

var에 시리얼 라이저 = 새로운 System.Xml.Serialization.XmlSerializer (대해서 typeof (IpSettings));

답변

0

.NET 직렬화의 속성을 통해 XML 직렬화를 제어 할 수 있습니다. 직렬화 시스템 속성을 무시하도록하려면, 당신은 XmlIgnore 속성으로 장식 할 수 있습니다

public class IpSettings 
{ 

    [System.Xml.Serialization.XmlIgnore] 
    public string IP { get; set; } 


    public string Mask { get; set; } 

    public string Gateway { get; set; } 

    public string DNS1 { get; set; } 

    public string DNS2 { get; set; } 

} 
+0

[ReadOnly (true)] 속성없이 IP 속성을 직렬화하려고합니다. [System.Xml.Serialization.XmlIgnore]는 직렬화에서 IP 속성을 완전히 무시합니다. –

+0

미안 알렉스. 당신이 묻는 것을 완전히 잘못 해석했습니다. xmlserialization이 속성과 같은 객체 메타 데이터를 직렬화하지 않기 때문에 왜 당신이 묻고 싶은 것이 필요한지 잘 모르겠습니다. – pdriegen

+0

필자가 생각하기에 문제는 직렬화가 아닌 리플렉션을 사용한다는 것입니다. XmlSerializer가 IpSettings 클래스를 반영하려고하면 .net CF에 [ReadOnly] 속성이 없으므로 실패합니다. 내 추측이야. –

0

나는 내가 뭔가를 해결하는 방법을 참조 할 때 나는 종종 내가 문제를 접근하는 방법을 재고 할 필요가 발견했습니다 Compact Framework.

다음 코드와 같은 것을 고려하십시오. 여전히 IP 필드의 읽기 전용 특성을 유지하면서 클래스 프로그래머, 유연성,

public class IpSettings 
{ 

    private string ip; 

    public IpSettings() 
    { 
    } 

    public IpSettings(string ipAddress) 
    { 
     ip = ipAddress; 
    } 

    public string IP { get { return ip; } } 

    public string Mask { get; set; } 

    public string Gateway { get; set; } 

    public string DNS1 { get; set; } 

    public string DNS2 { get; set; } 

    public static IpSettings Load() { 
     var ipSetting = new IpSettings(); 
     // code to load your serialized settings 
     ipSettings.ip = // some value you just read 
     return ipSettings; 
    } 

} 

이 당신을 줄 것이다 : 그것은 여전히 ​​문자열 IP 값이 읽기 전용 될 수 있습니다.

관련 문제