ProtoInclude в абстрактном классе-библиотеки DLL не могут знать друг о друге


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

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

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

[1]}Dll2 ссылается на dll1. (поэтому мы не можем ссылаться на дочернюю циклическую зависимость класса)

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

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

1 3

1 ответ:

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

  1. Используйте строку версии assembly-qualified-name, вместо typeof() - звучит хрупко, но на самом деле, сколько из .NET BCL висит вместе (см. типичное использование BCL: EditorAttribute, TypeConverterAttribute и т.д.)

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

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

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

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