Как я могу зарегистрировать суррогат для обобщенного c класса в protobuff- net? - PullRequest
0 голосов
/ 22 марта 2020

У меня есть родовой c класс, PropertyCollection<TKey>. Поскольку он содержит коллекцию со значениями типа объекта, я должен использовать суррогат. Хитрость в том, что я хочу сделать это один раз для всех возможных типов, переданных в TKey.

. У меня нет проблем с этим для одного типа. Если я хочу использовать суррогат, когда TKey является MyEnum, я использую приведенный ниже блок кода, и он отлично работает.

RuntimeTypeModel.Default
                .Add(typeof(PropertyCollection<MyEnum>), false)
                .SetSurrogate(typeof(PropertyCollectionSurrogate<MyEnum>));

Моя задача - заставить его работать с all значения TKey. Я попытался добавить тип в метод, украшенный атрибутом [OnSerializing], но это не сработало, потому что сериализатор уже создан.

Я понимаю, что каждый TKey - это, по сути, отдельный метод, поэтому, возможно, Я застрял. Есть ли способ зарегистрировать суррогат, используя атрибут, который может следовать за классом? Или я могу эффективно «свернуть свою собственную» сериализацию, используя атрибуты [OnSerializing] и [OnDeserializing]?

Здесь будет что-нибудь действительно ценное!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...