Angenommen, ich habe einen Typ, dessen Wert vollständig durch eine Ganzzahl dargestellt werden kann, aber über eine Validierungslogik verfügt, die in der Web-API zurückgegeben und akzeptiert wird. Im Einklang mit gutem Code und primitive Besessenheit zu vermeiden, könnte ich so etwas wie:Optimieren und vereinfachen Sie die DataContract-Serialisierung für sehr einfache Klassen?
public class FiscalPeriod
{
public FiscalPeriod(int id)
{
if (!Validator.IsValidPeriod(id))
throw new ArgumentException($"Invalid fiscal period ID '{id}'", nameof(id));
Id = id;
}
public int Id { get; private set; }
public override string ToString() => Id.ToString();
public static implicit operator int(FiscalPeriod period) => period.Id;
}
Dann, wenn diese Art von einem Web-API-Aufruf zurückgegeben wird, wird es in JSON serialisiert als:
"FiscalPeriod" : {"Id": 201601},
Gibt es stattdessen eine Möglichkeit, es zu serialisieren, um das Folgende zu erzwingen?
"FiscalPeriod" : 201601,
also, dass sie mehr sein kann als eine einfache Zahl auf der Client-Seite leicht zu handhaben?
Meinen Sie 'Validator.IsNotValidPeriod (id)'? –
Korrigiert. Vielen Dank. –
http://blog.maskalik.com/asp-net/json-net-implement-custom-serialization/ – dotctor