У меня есть класс ReportDef
, который является конкретным классом, который я при необходимости украсил атрибутами [DataContract]
и [DataMember]
. ReportDef
находится в сборке A1
вместе с моими ServiceContract
, IReportService
. Затем у меня есть другой класс, UiReportDef
, который наследуется от ReportDef
и находится в сборке A2
. UiReportDef
не имеет дополнительного состояния, о котором заботится служба.
Я хочу вызвать мой сервис с экземпляром UiReportDef
. Есть ли какой-нибудь способ (кроме ручного создания экземпляра ReportDef
из UiReportDef
), чтобы сделать это без того, чтобы мой сервис знал о A2
? Я знаю о KnownType
. Я не хочу ссылаться на A2
.
РЕДАКТИРОВАТЬ: Вот некоторый контекст, который может сделать мой вопрос легче понять. My ServiceContract
реализует IReportService
, который определяет метод, RunReport(ReportDef report)
. ReportDef
украшен атрибутом DataContract
и имеет закрытых членов, украшенных DataMember
. UiReportDef
находится в сборке, которая зависит от сборок, связанных с пользовательским интерфейсом и т. Д. Я не проектировал существующую иерархию классов. Мне нужно передать ReportDefs
и UiReportDefs
(как ReportDefs
) на новый сервис. Поскольку ReportDef
является конкретным, я ожидаю, что сериализатор будет обрабатывать UiReportDefs
как ReportDefs
при отсутствии какой-либо другой информации.