2012-10-09 3 views
1

에 연재되지 않습니다. C 라이브러리 내에서 net 라이브러리가 호출 됨) :더블 특성 우리는 개체를 XML로 직렬화 XML

XDocument rootElement = ... 

Test test = new Test(); 
test.Name = "xxx"; 
test.TestScore= 1.0d; 
rootElement.Add(test.ToXElement()); 

모든 유형의 속성 (문자열, 부울, long, int, us hort 등)은 double 속성을 제외하고 직렬화됩니다. 일단 수동으로 다른 것으로 변환되면 직렬화됩니다 (이중이 아님).

XML은 다음과 같습니다

<Root> 
    <Test> 
    <Name>xxx</Name> 
    </Test> 
</Root> 

이중 속성이 직렬화되지 않습니다 어떤 이유가 있습니까?

+1

에서

[XmlIgnore] public double Price { get;set; } [XmlElement("Price")] public string PriceString { get {return Price.ToString();} set {Price = double.Parse(value);} } 

어떻게 두 번 직렬화되지 않는 것을 알 수 있습니까? 출력물을 제공 할 수 있습니까? –

+0

이 코드를 실행할 때 ('rootElement'가 없기 때문에 반환 된'XElement'를 변수에 캡쳐하는 것을 제외하고), 요소는 Name과 TestScore를 모두 포함합니다. –

+0

그래, 그게 내가 불행히도 우리의 집합 (프로젝트, 플랫폼 등)에서 이중 속성이 직렬화되지 않습니다 기대하고 있습니다. – BanditoBunny

답변

3

얼마나 정교하게 만들 것인지를 정의하려면 수동으로 만들어야합니다. http://bytes.com/topic/c-sharp/answers/768555-serializable-double-precision

+0

감사합니다. 우리는 이것을 시도해 보았습니다. 일시적인 해결 방법으로 우리는 수동으로 객체를 직렬화하고 있습니다. 문제는 올바른 정밀도를 얻지 못했지만 속성을 얻을 수 없다는 것입니다 (직렬화 엔진에서 ToString()이 실패 할 수도 있음). 이 이상한 행동에 대한 이유를 알고 싶습니다. – BanditoBunny

관련 문제