OBJECT

2012-08-15 4 views
1
멤버의 Wcf 직렬화

개체 유형의 필드가있는 DataContract (BalanceClassificationAttribute)가 있습니다.OBJECT

[DataContract] 
[KnownType(typeof(string))] 
[KnownType(typeof(long))] 
[KnownType(typeof(int))] 
[KnownType(typeof(uint))] 
public class BalanceClassificationAttribute 
{ 
    /// <summary> 
    /// Value of searching attribute. 
    /// </summary> 
    [DataMember] 
    public Object Value 
    { 
     get; 
     set; 
    } 
} 

이 필드의 값은이 attribytes에게

[KnownType(typeof(string))] 
[KnownType(typeof(long))] 
[KnownType(typeof(int))] 
[KnownType(typeof(uint))] 

을 추가했지만이 DataContract 작동하지 않는 문자열, 긴, INT, UINT

로 할 수있다. 더 무엇을 할 수 있습니까?

+0

'[KnownType (typeof (object))]'도 추가해야합니다. –

답변

0

KnownTypeAttribute의 주된 의도는 SOAP 메시지 비 직렬화의 핸들 유형 상속 시나리오입니다. 원시 타입에서 데이터 변환을 수행하는 방법으로이를 사용하려고 시도하고 있습니다. 가장 안전한 방법은 KnownType 목록에서 참조하는 유형의 일련 번호 TryParse 통화로 데이터 변환을 처리하는 것입니다.

+0

안녕하세요! 이 필드를 객체로 남겨 두겠습니까? 이 경우 내 WCF 테스트 클라이언트에서는이 DataContract를 사용하는 메서드를 사용할 수 없습니다. –

+0

실제로'TryParse' 메서드를 사용하기 쉽기 때문에 속성 유형을'string'으로 설정하는 것이 좋습니다. 변환 된 결과로 수행하는 작업은 응용 프로그램에 대한 설계 관심사이지만, 'Object'유형은 사용하지 않는 한 불투명 한 실제 유형을 만들기 때문에 사용하지 않아야합니다. –

관련 문제