를 작동하지 않는 기본 클래스 속성 이름은 내가 좋아하는 기본 클래스가 다음DataContract 직렬화 -
[DataContract(Name="MyDomainObject")]
public class MyDomainObject : SerializableDomainObject<MyDomainObject>
{
public MyDomainObject()
{
}
public MyDomainObject(string name)
{
Name = name;
}
[DataMember(Order = 1)]
public string Name { get; private set; }
}
:
[Serializable]
public class SerializableDomainObject<T>
{
public SerializableDomainObject()
{
ID = Guid.NewGuid();
}
[DataMember(Name="ID", Order = 0)]
public Guid ID { get; private set; }
public void Save()
{
// serialize
}
public void Load()
{
// deserialize
}
}
난 다음이에서 파생 된 클래스를 많이 가지고
가 여기에 하나의 예입니다
<MyDomainObject xmlns="http://schemas.datacontract.org/2004/07/DomainObjects" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<_x003C_ID_x003E_k__BackingField>2b3c00f6-1b15-4a6b-bd6c-a1f447ea5a34</_x003C_ID_x003E_k__BackingField>
<Name>AName</Name>
</MyDomainObject>
이 왜 ID 속성이 무관하지 않다 : 일단 여기 직렬화
는 출력 g는 기본 클래스의 DataMember 특성에서 제공 한 이름으로 직렬화 되었습니까?
이 속성을 비공개로 유지하고 이름을 지정할 수있는 방법이 있습니까? 아니면 공공 장소에서만 작동합니까? 이유는 사용자가 ID 필드를 편집 할 수있게하고 싶지 않기 때문입니다. – James
정의한 이름으로 비공개로 유지하려는 경우 명시 적으로 백킹 필드를 선언하고 C#의 자동 구현 된 속성을 사용하지 마십시오. –
개인 필드를 사용해 주셔서 감사합니다. – James