LightInject 入门

tod*_*dmo 6 .net c# visual-studio-2013 light-inject

我喜欢LightInject基准测试;他们疯了!一路走好,你应该写一本关于.Net性能的书,我是认真的。

我看文档

我安装了dll。按照那一步就OK了。

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

container.Register<IFoo, Foo>();
var instance = container.GetInstance<IFoo>();
Assert.IsInstanceOfType(instance, typeof(Foo));
Run Code Online (Sandbox Code Playgroud)

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

顺便说一句:如果没有明确地在文档中添加这些步骤,然后参考其他“手册页”,那会是错误的吗?获取容器的方法可能有很多种;我知道的不够多,不知道我需要哪一个。在文档的这一点上,我只是在寻找“这将适用于 90% 的情况”示例,以及指向更专业案例的链接。

谢谢!

Pau*_*sik 9

你应该很高兴去。IFoo 是你的接口,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.");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)