gpt4 book ai didi

c# - MVVM SimpleIoc,接口(interface)实现需要构造参数时如何使用接口(interface)

转载 作者:IT王子 更新时间:2023-10-29 04:43:24 24 4
gpt4 key购买 nike

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

public class MyServiceImplementation : IMyService {
public MyServiceImplementation(string contructorString) { ... }
}

我希望注册接口(interface)的实现会起作用,但 SimpleIoc 在尝试解析接口(interface)时不考虑提示。

SimpleIoc.Default.Register<MyServiceImplementation>(() => {
return new MyServiceImplementation("Hello World");
});

SimpleIoc.Default.Register<IMyService, MyServiceImplementation>();

有没有办法用 SimpleIoc 来做到这一点,还是我应该考虑使用更完整的 Ioc?

编辑:这确实有效,但我仍然想知道为什么上面的表格不起作用。

SimpleIoc.Default.Register<IMyService>(() => {
return new MyServiceImplementation("Hello World");
});

最佳答案

您的第一种方法不起作用的原因是 SimpleIOC 不使用自身来构造对象。

根据你的声明

SimpleIoc.Default.Register<MyServiceImplementation>(() => {
return new MyServiceImplementation("Hello World");
});

SimpleIoc.Default.Register<IMyService, MyServiceImplementation>();

调用SimpleIoc.Default.GetInstance<MyServiceImplementation>()将执行工厂方法,同时调用 SimpleIoc.Default.GetInstance<IMyService>()惯于。

链接调用的一种可能方法是为两种类型指定一个工厂方法,IMyServiceMyServiceImplementation ,即

SimpleIoc.Default.Register<MyServiceImplementation>(() => {
return new MyServiceImplementation("Hello World");
});

SimpleIoc.Default.Register<IMyService>(() => {
return SimpleIoc.Default.GetInstance<MyServiceImplementation>();
});

关于c# - MVVM SimpleIoc,接口(interface)实现需要构造参数时如何使用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8850106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com