У меня есть простое приложение .Net Core WPF / PRISM / Unity, которое имеет такой класс:
public class MyClass : IMyClass
{
public MyClass(string someMessage)
{
}
}
public interface IMyClass
{
}
В App.Xaml.cs у меня есть следующее:
public partial class App : PrismApplication
{
protected override Window CreateShell()
{
Container.GetContainer().AddExtension(new Diagnostic());
return Container.Resolve<MainWindow>();
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<MainWindow>();
containerRegistry.GetContainer().RegisterType(
typeof(IMyClass),
typeof(MyClass),
"",
new TransientLifetimeManager(),
new InjectionConstructor("Some nice message"));
}
}
Но если я пытаюсь внедрить IMyClass ...
public partial class MainWindow : Window
{
private readonly IMyClass myClass;
public MainWindow(IMyClass myClass)
{
InitializeComponent();
this.myClass = myClass;
}
, я получаю следующую ошибку:
Unity.ResolutionFailedException: 'Текущий тип, WpfApp7.IMyClass, является интерфейсоми не может быть построено. Вам не хватает соответствия типов?
Исключительная ситуация при:
· разрешающем типе: 'IMyClass' для параметра: 'myClass' в конструкторе: MainWindow (IMyClass myClass) · разрешающем типе: 'MainWindow'
Я сделал консольное приложение - без Prism - и сделал тот же код, он просто отлично работал.