Как импортировать классы как интерфейсы, используя Import / ImportMany в Prism? - PullRequest
0 голосов
/ 13 апреля 2020

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

Сначала я попробовал следующее:

public interface ISomeInterface
{
   ...
}

[Export(typeof(ISomeInterface))]
public class SomeImplementation: ISomeInterface
{
    ...
}

[ImportingConstructor]
public ScannerMainViewModel([ImportMany(typeof(ISomeInterface))] IEnumerable<ISomeInterface> someImplementations)
{
    ...
}

Но someImplementations имеет значение null.

Затем я удалил ImportMany из конструктора и использовал его в поле

[ImportMany(typeof(ISomeInterface))]
private IEnumerable<ISomeInterface> someImplementations;

с тем же результатом.

Затем я полностью удалил ImportMany и импортировал только один мой класс следующим образом:

[ImportingConstructor]
public ScannerMainViewModel(ISomeInterface someImplementation)
{
    ...
}

Это привело к ошибке:

An exception has occurred while trying to add a view to region 'MainRegion'. 
- The most likely causing exception was was: 'System.InvalidOperationException: No public constructor is available for type Common.Interfaces.IAccountScanner. ---> Unity.Exceptions.InvalidRegistrationException: Eine Ausnahme vom Typ "Unity.Exceptions.InvalidRegistrationException" wurde ausgelöst.

Что я делаю не так? Я также пытался использовать имена для контрактов, но это тоже не сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...