如何在 Prism 中的依赖项注入容器中指定构造函数参数?



如何在使用 Prism 配置的依赖项中注入构造函数参数?

我覆盖了RegisterTypes来注册我的依赖项,如下所示:

public partial class App : PrismApplication
{
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.Register<IMyService, MyService>();        
}
}

但是,MyService有一些构造函数参数,我需要能够传入。 我希望能够将构造函数参数传递给MyService,类似于我在 Unity 中这样做的方式。

containerRegistry.Register<IMyService, MyService>(
new InjectionConstructor("param1", "param2"));

我会创建一个手写IMyServiceFactory。这可以传递服务的参数潜在依赖项。

public interface IMyServiceFactory
{
IMyService CreateMyService();
}
internal class MyServiceFactory : IMyServiceFactory
{
public IMyService CreateMyService() => new MyService( "param1", "param2" );
}

也看看这个答案。

另一种选择是注册实例:

containerRegistry.RegisterInstance<IMyService>(new MyService("param1", "param2"));

参考:使用 Prism 注册类型

我已经对此进行了测试,它可以工作:

containerRegistry.Register<IMyService>(() => new MyService("param1", "param2"));
containerRegistry.RegisterSingleton<IMyService>(() => new MyService("param1", "param2"));
containerRegistry.Register(typeof(IMyService), () => new MyService("param1", "param2")); 
containerRegistry.RegisteSingleton(typeof(IMyService), () => new MyService("param1", "param2"));

最新更新