Я пытаюсь импортировать классы определенного типа интерфейса. Я уже искал помощи (например, здесь ), но, похоже, я не могу заставить ее работать.
Сначала я попробовал следующее:
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.
Что я делаю не так? Я также пытался использовать имена для контрактов, но это тоже не сработало.