C# MVVM SimpleIoc,当接口实现需要构造参数时如何使用接口
使用MVVM的SimpleIoc,我想为给定接口注册一个实现,但该实现在其构造函数中需要一个参数:C# MVVM SimpleIoc,当接口实现需要构造参数时如何使用接口,c#,mvvm-light,C#,Mvvm Light,使用MVVM的SimpleIoc,我想为给定接口注册一个实现,但该实现在其构造函数中需要一个参数: public class MyServiceImplementation : IMyService { public MyServiceImplementation(string contructorString) { ... } } 我希望注册接口的实现会起作用,但是SimpleIoc在试图解决接口时不考虑提示。 SimpleIoc.Default.Register<MyServ
public class MyServiceImplementation : IMyService {
public MyServiceImplementation(string contructorString) { ... }
}
<>我希望注册接口的实现会起作用,但是SimpleIoc在试图解决接口时不考虑提示。
SimpleIoc.Default.Register<MyServiceImplementation>(() => {
return new MyServiceImplementation("Hello World");
});
SimpleIoc.Default.Register<IMyService, MyServiceImplementation>();
simpleoc.Default.Register(()=>{
返回新的MyServiceImplementation(“Hello World”);
});
SimpleIoc.Default.Register();
有没有办法用SimiIOC来做这件事,或者我应该考虑使用一个更完整的IOC?< /P>
编辑:这就可以了,但我仍然想知道为什么上面的表单不起作用
SimpleIoc.Default.Register<IMyService>(() => {
return new MyServiceImplementation("Hello World");
});
simpleoc.Default.Register(()=>{
返回新的MyServiceImplementation(“Hello World”);
});
第一种方法不起作用的原因是SimpleIOC不使用自身构造对象
根据你的声明
SimpleIoc.Default.Register<MyServiceImplementation>(() => {
return new MyServiceImplementation("Hello World");
});
SimpleIoc.Default.Register<IMyService, MyServiceImplementation>();
谢谢@Obalix,这肯定是一个比我自己更好的解决办法!
SimpleIoc.Default.Register<MyServiceImplementation>(() => {
return new MyServiceImplementation("Hello World");
});
SimpleIoc.Default.Register<IMyService>(() => {
return SimpleIoc.Default.GetInstance<MyServiceImplementation>();
});