У меня есть родовой c класс, PropertyCollection<TKey>
. Поскольку он содержит коллекцию со значениями типа объекта, я должен использовать суррогат. Хитрость в том, что я хочу сделать это один раз для всех возможных типов, переданных в TKey
.
. У меня нет проблем с этим для одного типа. Если я хочу использовать суррогат, когда TKey
является MyEnum
, я использую приведенный ниже блок кода, и он отлично работает.
RuntimeTypeModel.Default
.Add(typeof(PropertyCollection<MyEnum>), false)
.SetSurrogate(typeof(PropertyCollectionSurrogate<MyEnum>));
Моя задача - заставить его работать с all значения TKey
. Я попытался добавить тип в метод, украшенный атрибутом [OnSerializing]
, но это не сработало, потому что сериализатор уже создан.
Я понимаю, что каждый TKey
- это, по сути, отдельный метод, поэтому, возможно, Я застрял. Есть ли способ зарегистрировать суррогат, используя атрибут, который может следовать за классом? Или я могу эффективно «свернуть свою собственную» сериализацию, используя атрибуты [OnSerializing]
и [OnDeserializing]
?
Здесь будет что-нибудь действительно ценное!