LightInject 入门
Getting Started with LightInject
我喜欢benchmarks on LightInject;他们疯了!干得好,你应该写一本关于 .Net 性能的书,我是认真的。
我看到 documentation.
我安装了dll。按照那一步就ok了。
然后文档的下一步假定我有一个 container
对象。
container.Register<IFoo, Foo>();
var instance = container.GetInstance<IFoo>();
Assert.IsInstanceOfType(instance, typeof(Foo));
糟糕!当然,我可能不是盒子里最锋利的绘儿乐,但我现在该怎么办?我应该为 "set it up" 创建什么 class 和方法,以便我可以遵循其余示例? (我想我最好设置它以便它在整个项目中工作)
顺便说一句:如果没有明确说明,然后参考其他 "man pages",此时在文档中添加这些步骤是否错误?也许有多种获取容器的方法;我不知道我需要哪一个。在文档中的这一点上,我只是在寻找 "this will work in 90% of the situations" 示例,以及指向更特殊案例的链接。
谢谢!
你应该可以开始了。 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.");
}
}
}
我喜欢benchmarks on LightInject;他们疯了!干得好,你应该写一本关于 .Net 性能的书,我是认真的。
我看到 documentation.
我安装了dll。按照那一步就ok了。
然后文档的下一步假定我有一个 container
对象。
container.Register<IFoo, Foo>();
var instance = container.GetInstance<IFoo>();
Assert.IsInstanceOfType(instance, typeof(Foo));
糟糕!当然,我可能不是盒子里最锋利的绘儿乐,但我现在该怎么办?我应该为 "set it up" 创建什么 class 和方法,以便我可以遵循其余示例? (我想我最好设置它以便它在整个项目中工作)
顺便说一句:如果没有明确说明,然后参考其他 "man pages",此时在文档中添加这些步骤是否错误?也许有多种获取容器的方法;我不知道我需要哪一个。在文档中的这一点上,我只是在寻找 "this will work in 90% of the situations" 示例,以及指向更特殊案例的链接。
谢谢!
你应该可以开始了。 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.");
}
}
}