:DataContract에서 기본값을 설정 하시겠습니까?
나는 일반적으로 이런 짓을 한 기본
[DataMember]
public string ScanDevice { get; set; }
:DataContract에서 기본값을 설정 하시겠습니까?
나는 일반적으로 이런 짓을 한 기본
[DataMember]
public string ScanDevice { get; set; }
에 의해 ScanDevice = "XeroxScan"을 설정하려면 이 같은 패턴 : 생성자가 직렬화 복원시에 호출되지 않습니다으로
[DataContract]
public class MyClass
{
[DataMember]
public string ScanDevice { get; set; }
public MyClass()
{
SetDefaults();
}
[OnDeserializing]
private void OnDeserializing(StreamingContext context)
{
SetDefaults();
}
private void SetDefaults()
{
ScanDevice = "XeroxScan";
}
}
에서, OnDeserializing을 잊지 마십시오.
당신은 항상 XeroxScan로 기본 설정하려면, 왜 같은 간단한 일하지 :
[DataMember(EmitDefaultValue = false)]
public string ScanDevice= "XeroxScan";
안녕하세요 kd7, 솔루션 측면에서 DataContract를 사용하지만이 DataContract가 인수로 전달되는 수신 요청의 경우에만 솔루션이 작동합니다. 대체 솔루션으로 DataContract에 두 개의 [한 일반 및 한 Nullable] 속성을 만들고 null 가능 유형을 DataMember로 노출하고 노출 된 필드의 값을 비공개 필드로 설정해야합니다. – ajaysinghdav10d
유형 기본값에 대한 벌금 및 다른 사람을 위해 단지 훨씬 더 우아한 이모 – user1496062
감사 댄. 나는 질문이있다. 기본값은 XeroxScan이지만 사용자가 HP 스캔을 통과하면 HP 스캔이 올바르게 수행됩니까? – acadia
그들이 생성자에 장치를 전달 했습니까? 그렇다면 SetDefaults를 호출 한 후 생성자에서 속성을 설정할 수 있으며 새 값이 사용됩니다. deserialize가 발생하기 전에 OnDeserializing이 호출되기 때문에 데이터가 deserialize 될 때도 마찬가지입니다. 이렇게하면 직렬화 복원 중에 속성이 채워지기 전에 모든 초기 '기본'상태를 설정할 수 있습니다. –
나는 이것을 시도했지만 작동하지 않는 것 같습니다. OnDeserializing은 이진 직렬화에서만 사용되지 않습니까? – xr280xr