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

问题描述 投票:0回答:3

如何在使用 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"));
c# wpf prism prism-7
3个回答
3
投票

我会创建一个手写的

IMyServiceFactory
。这可以传递您的参数服务的潜在依赖性。

public interface IMyServiceFactory
{
    IMyService CreateMyService();
}

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

也看看这个答案


2
投票

另一种选择是注册一个实例:

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

参考:使用 Prism 注册类型


0
投票

我认为它有效。

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

containerRegistry.Registe(typeof(IMyService), () => new MyService("param1", "param2")); 
containerRegistry.RegisteSingleton(typeof(IMyService), () => new MyService("param1", "param2"));
© www.soinside.com 2019 - 2024. All rights reserved.