2011-03-03 3 views
2

나는 다음과 같은 간단한 클래스가있는 경우 : 나는 .NET ASMX 웹 서비스에서이 형식의 개체를 반환하는 경우ASMX Web Services에서 float/double 형식을 제어하는 ​​방법이 있습니까?

[Serializable] 
public class Test 
{ 
    public double a = 0.0000001; 
} 

는 응답은 다음과 같습니다이다

<Test> 
    <a>1E-07</a> 
</Test> 

, 아마도하지 동시에, 0.0000001.ToString()의 기본 동작, 적어도 ToString으로, 서식 매개 변수를 지정할 수 있습니다 (이 경우, 에 기하 급수 표기를 원하지 않습니다. XmlSerializer 나는 그것을 완벽하게 제어 할 수 있습니다. 반환 객체에 지정할 수있는 특성 내에서 훨씬 덜 단순합니다.

편집 : 실제로 강력하게 입력 한 것에이 속성을 실제로 적용하고 싶습니다. 0.0000001과 1E-7은 모두 .NET에서 유효한 이중 표현입니다. 다른 것과 마찬가지로 전선을 통해 물건을 보내도록하고 싶습니다.

+1

이 값이 스키마에 대해 유효성을 검사하면 클라이언트가 왜 신경을 씁니까? 확실하게 그들은 유효성을 검사하는 모든 가치를 소비 할 수 있습니까? 그렇지 못하면 처리 할 수있는 것과 일치하도록 스키마를 변경해야합니다. –

+0

비즈니스 사용자 대 개발자. WS 엔드 포인트 외에도 CSV 파일 등으로 데이터를 덤프하는 도구가 있습니다. 일반적으로이 둘의 필요성 사이에는 너무 많은 단절이 없지만 시각적 미학과 개발 실용주의를 조화 시키려고합니다. –

+0

"0.0000001과 1E-7은 모두 .NET에서 유효한 이중 표현입니다."-하지만 WS에서는 유효한 xs : double 표현을 갖는 것이 중요합니다. – Joe

답변

2

간단한 접근 방식은 강력한 형식의 속성을 무시 된 것으로 표시하고 XML 직렬화를 위해서만 다른 문자열 속성을 제공하는 것입니다. getter 내에서 필요에 따라 서식을 적용하고 setter에서 다시 구문 분석 할 수 있습니다.

+0

+1을 지적하기 위해서는 +1해야하지만, 수정해야합니다 (가능하다면). 이 컨텍스트는 공개 API 용이므로 가능한 한 타이핑을 유지하고 싶습니다. –

1

double은 the XML Schema xs:double datatype과 호환되는 표현을 사용하여 유선을 통해 전송됩니다.

모든 합리적인 클라이언트가이를 해석 할 수 있어야합니다. 다른 표현을 원한다면 특별한 이유가있는 경우, 유일한 실제적인 해결책은 원하는 방식으로 포맷 된 문자열을 사용하는 것입니다.

관련 문제