Доступ к пользовательским атрибутам класса .NET внутри пользовательского конвертера json
В моем проекте я написал собственный конвертер json для обрезки пробелов, присутствующих в свойстве string.
Вот пример типичного класса, который мы будем использовать,
public class Candidate
{
public string CandidateName { get; set; }
}
Вот мой пользовательский конвертер json
public class StringSanitizingConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(string);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue , JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.String)
if (reader.Value != null)
{
string sanitizedString = (reader.Value as string).Trim();
if (StringSanitizeOptions.HasFlag(StringSanitizeOptions.ToLowerCase))
sanitizedString = sanitizedString.ToLowerInvariant();
return sanitizedString;
}
return reader.Value;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var text = (string)value;
if (text == null)
writer.WriteNull();
else
writer.WriteValue(text.Trim());
}
}
С моим пользовательским конвертером я теперь могу отформатировать строку, обрезав все имеющиеся пробелы, отправленные в методы действия, используя мой «Кандидат» в качестве одного из его параметров.
public void Post(ComplexType complexTypeParameter){
}
До сих пор все работало хорошо. Позже я захотел усовершенствовать этот json-конвертер для форматирования строковых свойств на основе атрибутов, установленных для свойства string в классе Candidate. например, предположим, что я написал свой кандидатский класс, как это,
public class Candidate
{
[StringSanitizingOptions(Option.ToLowerCase)]
public string CandidateName { get; set; }
}
И если я захочу отформатировать строковые свойства класса на основе конфигурации настраиваемого атрибута внутри преобразователя json, я не смогу получить доступ к этому настраиваемому атрибуту и его конфигурации внутри метода ReadJson настраиваемого преобразователя.
Вот что я уже пробовал, но безуспешно,
Нет вCustomAttributes
свойствоobjectType
параметр отправлен наReadJson()
метод.
Пытался выяснить, могу ли я извлечь родительский класс свойства внутриReadJson()
метод, чтобы я мог применить отражение к классу, чтобы извлечь пользовательские атрибуты, заданные для любого его свойства, но я не мог извлечь это тоже.