2013-12-22 4 views
1

Я пытаюсь использовать Protobuf.net версии 2.0.0.668 для хранения файлов. Мое решение имеет интерфейсы, определенные в одном проекте и классах, определенных в отдельных проектах, со ссылками на проекты классов на проект интерфейса. Каждый класс использует интерфейс для обозначения других классов. До сих пор это работало нормально, но protobuf хочет, чтобы интерфейсы указывали конкретные типы классов в атрибуте ProtoInclude. Это невозможно из-за моей структуры проекта.с использованием protobuf-net с развязанными интерфейсами

Должен быть способ обойти это. Например, я использую шаблон проектирования локатора службы, чтобы возвращать экземпляры классов для ссылок на интерфейс, когда это необходимо для несвязанных классов: IServiceLocator <> .GetInstance(). Есть ли способ сделать это в protobuf - спросите ли вы объект типа «T», когда он нужен?

Или есть еще одно решение, не реорганизовывающее мой проект в одну массивную сущность?

ответ

0

Никто не подошел, чтобы ответить, и я не нашел способ сделать это сам, поэтому я отказался от этого подхода (используя ProtoInclude и связанные с ним атрибуты). ProtoInclude инвертирует зависимость между интерфейсом и его реализацией, что ограничивает его полезность в некоторых контекстах. Мое решение состоит в том, чтобы сделать все это вручную: напишите мои собственные .proto-файлы и т. Д. Что не так уж плохо, в целом.

Смежные вопросы