我将集装箱设置如下:
.... CompositionContainer container = new CompositionContainer(catalog); CompositionBatch batch = new CompositionBatch(); batch.AddExportedValue(_dataClient); batch.AddExportedValue(_orderClient); batch.AddExportedValue(container); container.Compose(batch);
_dataClient 和 _orderClient 在一个不同的集合中,我不能碰它们。然而,它们分别实现了 IDataFeed 和 IOrderFeed (但是它们的类型分别是 DataClient 和 OrderClient )。稍后,我在构造函数中期望它们:
_dataClient
_orderClient
IDataFeed
IOrderFeed
DataClient
OrderClient
[ImportingConstructor] public ShellViewModel(IShellView view, IDataFeed dataFeed, IOrderFeed orderFeed) ...
但这会抛出一个 ImportCardinalityMismatchException 。但是,如果我将构造函数更改为此,它可以工作:
ImportCardinalityMismatchException
[ImportingConstructor] public ShellViewModel(IShellView view, DataClient dataFeed, OrderClient orderFeed) ...
我尝试过这样做,但也提出了同样的例外:
...