Puoi provare a utilizzare C# preprocessor directives:
public class Dto
{
#if !DEBUG
[JsonProperty("l")]
#endif
public string LooooooooooooongName { get; set; }
}
EDIT
Ок, forse questo non è molto conveniente se si deve fare in giro l'intera applicazione. Un altro approccio più conveniente potrebbe essere quello di implementare l'ContractResolver
personalizzato e posizionare questa direttiva per il preprocessore in un unico punto.
public class CustomContractResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
var prop = base.CreateProperty(member, memberSerialization);
#if DEBUG
if(prop != null)
{
// If in debug mode -> return PropertyName value to the initial member name.
prop.PropertyName = member.Name;
}
#endif
return prop;
}
}
E l'utilizzo:
var jsonString = JsonConvert.SerializeObject(someObj, new JsonSerializerSettings
{
ContractResolver = new CustomContractResolver(),
});
Nota: è possibile implementare wrapper impostazioni JsonConverter o serializzatore JSON uso di default, in modo da non necessario specificare il risolutore del contratto ogni volta.
fonte
2015-09-15 16:28:59
Intendi per l'intero programma, in tutte le classi contemporaneamente? – tia
Sì, ho diverse decine di DTO –