Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVVM SimpleIoc,当接口实现需要构造参数时如何使用接口_C#_Mvvm Light - Fatal编程技术网

C# 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

使用MVVM的SimpleIoc,我想为给定接口注册一个实现,但该实现在其构造函数中需要一个参数:

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>();
});