Код: Выделить всё
public class UserInfo
{
[PersonalData]
public string Name { get; set; }
[PersonalData]
public string Address { get; set; }
[PersonalData]
public DateTime Dob { get; set; }
public bool IsActive { get; set; }
}
< /code>
У меня есть много сценариев I сериализуйте этот объект, и я хотел бы сделать, чтобы маскировать данные PII, подобные этой «****», во время процесса сериализации-я сериализую это, чтобы написать, например, в журнале. < /p>
public class PersonalDataSerializer : JsonConverter
where T: new()
{
public override bool CanConvert(Type typeToConvert)
{
return typeToConvert.HasPiiData();
}
public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
// read here...
throw new NotImplementedException();
}
public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options)
{
// write here...
throw new NotImplementedException();
}
}
Код: Выделить всё
public static class TypeExtensions
{
public static bool HasPiiData(this Type type)
{
return type.GetProperties().Any(p => p.IsPiiData());
}
public static bool IsPiiData(this PropertyInfo prop)
{
foreach (var att in prop.CustomAttributes)
{
if (att.AttributeType == typeof(PersonalDataAttribute))
{
return true;
}
if (att.AttributeType.Name.Contains("PersonalData"))
{
return true;
}
}
return false;
}
}
Подробнее здесь: https://stackoverflow.com/questions/648 ... s-based-on
Мобильная версия