相关疑难解决方法(0)

编写您自己的IOC容器

有人在C#写过自己的IOC容器吗?或者绝大多数人使用各种框架,如Spring.每个人的专业和意见是什么?

c# ioc-container inversion-of-control

29
推荐指数
3
解决办法
2万
查看次数

什么是DI容器?

我正在观看有关依赖注入的课程视频,并且讲师讨论了di-container但没有详细解释,现在我读了一些文章,并且想确认一下我现在做对了。下面是简单的程序,我的问题是,

下面的Program类是最简单的di容器吗?如果不是这样的话,简单的di-container会怎么样

interface  Implementable {
    void doSmth();
}

class A implements Implementable {

    @Override
    public void doSmth() {

    }
}

class B {

    private Implementable i;

    public B(Implementable implementable) {
        this.i= implementable;
    }

    public void doSmth(){
        i.doSmth();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是类双层容器吗?

class Program {
    B b = new B(new A());
    b.doSmth();
}
Run Code Online (Sandbox Code Playgroud)

java dependency-injection inversion-of-control

10
推荐指数
1
解决办法
9542
查看次数

在C#中创建一个小的IoC容器

我决定在C#中为MonoGame项目创建一个非常小的IoC容器.我决定自己创建一个的原因是为了提高性能并使用更少的我无法控制的库.由于IoC非常简单,我认为库不应该处理它.

我开始了一个天真的实现:

var container = new Container();
container.Register("service-alias",
    container => new ServiceClass(container.Resolve("other.dep"));

container.Resolve("service-alias").MethodOnServiceClass()
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在C#的类型系统中做到这一点.一个Dictionary <string, Func<Container>>?如何键入resolve方法的返回值?

c# ioc-container inversion-of-control

4
推荐指数
1
解决办法
5599
查看次数