ProtoInclude в абстрактном классе - библиотеки не могут знать друг о друге - PullRequest
3 голосов
/ 14 декабря 2011

у нас следующий сценарий:

абстрактный класс в dll1

класс, который наследуется от него, в dll2.

dll2 ссылки на dll1. (поэтому мы не можем ссылаться на дочерний класс - циклическая зависимость)

как мы можем ProtoInclude дочерний класс? тип будет неизвестен.

Пожалуйста, предоставьте образец документации для модели времени выполнения, если это единственный способ.

1 Ответ

2 голосов
/ 14 декабря 2011

Два варианта:

  1. использование строковой версии с полным именем сборки вместо typeof() - звучит хрупко, но на самом деле большая часть .NET BCL зависает вместе (см. Типичное использование BCL из: EditorAttribute, TypeConverterAttribute и т. д.)

    [ProtoInclude("Full.Namespace.Type, Assembly, ...")]
    

    (он также должен работать только для сборки type +, но может помочь и полная версия)

  2. выполнить связывание во время выполнения (доступно только в v2) в коде вашего приложения, охватывающего обе сборки:

    RuntimeTypeModel.Default[typeof(BaseType)].AddSubType(13, typeof(SubType));
    
...