我是Simple Injector的新手。 我有一个带有类别 Testservice 的WCF服务,该服务实现了接口 ITestService 。根据Simple Injector文档,在svc标记中,我将工厂属性添加为“ SimpleInjector.Integration.Wcf.SimpleInjectorServiceHostFactory,SimpleInjector.Integration.Wcf” 。同样在AppStart中,我使用以下命令注册了容器
container.RegisterWcfServices(Assembly.GetExecutingAssembly()); &
container.Register<ITestService, TestService>(Lifestyle.Scoped);
WCF正常工作。现在,我需要从MVC应用程序中使用服务TestService。 在我的MVC应用程序中,我通过Nuget添加了 SimpleInjector.Integration.Web 和 SimpleInjector.Integration.Web.MVC ,并且还添加了WCF服务参考。
我为在MVC应用程序的“应用程序启动”中注册 TestService 类而感到惊讶,以便注入控制器。容器需要注册为
container.Register(ITestService, <TImplementation>);
但是我无法解决或找出我需要在实施上提供的内容。它需要一个实现类,即TestService,但是TestService在WCF componebt中可用,并且只有MVC应用中的接口引用在这里。
有人可以指导我的方法是否正确以及上述解决方案。预先感谢。
答案 0 :(得分:1)
您可以在registerIn方法中为SimpleInjector提供一种工厂方法,该方法将用于构建对象。
container.Register<ITestService, TestService>(Lifestyle.Scoped);
可以写为
container.Register<ITestService>(() => new TestServiceClient(), Lifestyle.Scoped);
然后您可以自由选择要在工厂方法中使用的构造函数