У меня есть компонент модели домена с несколькими классами сущностей. В другом компоненте у меня есть репозитории объектов, реализованные с использованием сериализации Json.NET. Я хочу игнорировать некоторые свойства сущности во время сериализации, поэтому прямым решением было бы украсить эти свойства атрибутом JsonIgnore
. Однако, из принципа, я хотел бы избежать ссылок на другие компоненты, включая сторонние библиотеки, такие как Json.NET, в моей модели домена.
Я знаю, что я могу создать собственный распознаватель контрактов, как описано here, но сложно обобщить, что сериализовать и что не сериализуется в разных объектах, Обычно я хочу игнорировать все свойства readonly, но есть исключения, например, коллекции:
public List<Pixel> Pixels
{
get { return this.Pixels; }
}
Я также могу создать выделенный распознаватель контрактов для каждого объекта, как описано здесь, но это похоже на решение с высоким уровнем обслуживания, особенно с многочисленными объектами.
Идеальное решение было бы, если бы Json.NET поддерживал некоторый атрибут в рамках .NET Framework, но я даже не могу найти подходящего кандидата...
Я подумал о создании собственного пользовательского атрибута Ignore
в моей модели домена и создании настраиваемого адаптера контракта, который использует отражение для обнаружения этого атрибута и игнорирует декорированные свойства при сериализации. Но действительно ли это лучшее решение данной проблемы?