У меня есть класс, который фактически является перечислением на основе объекта. Существует статический набор объектов, предоставляемых классом, и все использует одни и те же экземпляры. например (Обратите внимание на частный конструктор)
[DataContract]
public class FieldType
{
public static readonly FieldType Default = new FieldType(1, "Default");
public static readonly FieldType Name = new FieldType(2, "Name");
public static readonly FieldType Etc = new FieldType(3, "Etc");
private FieldType(uint id, string name)
{
Id = id;
Name = name;
}
[DataMember] public uint Id { get; private set; }
[DataMember] public string Name { get; private set; }
//snip other properties
}
Это прекрасно работает, пока мне не придется сериализовать через WCF. DataContractSerializer
создает новые объекты, минуя конструктор. Это приводит к допустимому объекту FieldType
, но это новый экземпляр, который не является одним из моих статических экземпляров. Это делает эталонные сравнения с известными статическими значениями неудачными.
Есть ли способ переопределить поведение сериализации для класса, чтобы я создавал экземпляр объекта вместо заполнения предоставленного мне экземпляра?