c# - LightInject 入门

标签 c# .net visual-studio-2013 light-inject

我喜欢 benchmarks on LightInject ;他们疯了!干得好,你应该写一本关于 .Net 性能的书,我是认真的。

我看到 documentation .

我安装了dll。按照那个步骤ok。

然后文档的下一步假定我有一个 container 对象。

container.Register<IFoo, Foo>();
var instance = container.GetInstance<IFoo>();
Assert.IsInstanceOfType(instance, typeof(Foo));

糟糕!当然,我可能不是盒子里最锋利的绘儿乐,但我现在该怎么办?我应该创建什么类和方法来“设置它”以便我可以遵循其余示例? (我想我最好设置它以便它在整个项目中工作)

顺便说一句:此时在文档中添加这些步骤是否错误,如果没有明确说明,然后引用其他“手册页”?也许有多种获取容器的方法;我不知道我需要哪一个。此时在文档中我只是在寻找“这将在 90% 的情况下工作”示例,以及指向更专业案例的链接。

谢谢!

最佳答案

你应该可以开始了。 IFoo 是您的接口(interface),而 Foo 是具体实现。你应该可以做任何你想做的事。本教程只是向您展示 DI 需要什么。例如,在您的 IFoo 中创建方法 DoStuff,在 Foo 中实现它,然后调用它:'instance.DoStuff();'

类似于:

using LightInject;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var container = new ServiceContainer();
            container.Register<IFoo, Foo>();
            container.Register<IBar, Bar>();
            var foo = container.GetInstance<IFoo>();
            foo.DoFooStuff();
        }
    }

    public interface IFoo
    {
        void DoFooStuff();
    }

    public class Foo : IFoo
    {
        // this property is automatically populated!
        public IBar MyBar { get; set; }

        public void DoFooStuff()
        {
            MyBar.DoBarStuff();
            Console.WriteLine("Foo is doing stuff.");
        }
    }

    public interface IBar
    {
        void DoBarStuff();
    }

    public class Bar : IBar
    {
        public void DoBarStuff()
        {
            Console.WriteLine("Bar is doing stuff.");
        }
    }
}

关于c# - LightInject 入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29018354/

相关文章:

c# - WinForms 标签内的超链接

c# - Azure 服务总线未收到所有消息(仅约 65%)

c - 下面的代码片段中是什么导致程序崩溃?

c# - datagridView 中的下拉菜单

c# - 为什么扩展方法只允许在非嵌套、非泛型静态类中使用?

c# - 带有泛型的类型化类

.net - 将数组的一部分向右移动的最快方法

c# - ObserveOn 和 SubscribeOn - 工作完成的地方

.net - 在没有 Access 权限的情况下打开 mdb Access 文件

c++ - 错误 : unresolved external symbol _main referenced in function ___tmaincrtstartup