Możesz spróbować użyć C# preprocessor directives:
public class Dto
{
#if !DEBUG
[JsonProperty("l")]
#endif
public string LooooooooooooongName { get; set; }
}
EDIT
Ок, może nie jest to bardzo wygodne, jeśli trzeba to zrobić po całej aplikacji. Innym wygodniejszym rozwiązaniem może być implementacja niestandardowego ContractResolver
i umieszczenie tej dyrektywy preprocesora tylko w jednym miejscu.
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;
}
}
A Zastosowanie:
var jsonString = JsonConvert.SerializeObject(someObj, new JsonSerializerSettings
{
ContractResolver = new CustomContractResolver(),
});
Uwaga: można wdrożyć otoki wokół ustawień JsonConverter lub wykorzystanie domyślny json serializer, więc przyzwyczajenie trzeba określić rezolwer o zamówieniu za każdym razem.
Masz na myśli cały program, na każdej lekcji jednocześnie? – tia
Tak, mam kilka dziesiątek DTO –