Десериализация XML с объектами MEF как XmlInclude - PullRequest
0 голосов
/ 11 декабря 2019

Я использую XML для своих файлов конфигурации и в настоящее время десериализирую в объекты или списки объектов напрямую. Я также использую Managed Extensibility Framework (MEF) для создания расширений для нашей прикладной платформы, но я не нашел способа связать их вместе.

Например, если бы я хотел добавить новый объект в этот базовый классиспользуя XMLInclude:

[XmlInclude(typeof(SubObject1))]
[XmlInclude(typeof(SubObject2))]
[XmlInclude(typeof(SubObject3))]
//New XmlInclude Types based on plugins?
[XmlType("SupportedObject")]
public class SupportedObject
{
    public string Name { get; set; }
}

с XML:

<SupportedObjects>
  <SupportedObject xsi:type="SubObject1">
      <Name>MainSub1</Name>
      <SubObject1Param>FooBar</SubObject1Param>
  </SupportedObject>

  <!-- MEF Plugin Object -->
  <SupportedObject xsi:type="MefObject1">
      <Name>MainSub1</Name>
      <MefParam1>something new</MefParam1>
  </SupportedObject>
</SupportedObjects>

Первый объект будет нормально загружаться, потому что он определен с использованием XmlInclude, но как определить расширение, скомпилированное в DLLи загружен как ленивый объект списка с контрактом, который будет включен как поддерживаемый объект xmlinclude? Я очень расстроен.

...