我爱benchmarks on LightInject;他们疯了!要走的路,你应该写一本关于.Net性能的书,我很认真。
我看到documentation。
我安装了dll。按照那一步确定。
然后文档的下一步假定我有一个container
对象。
container.Register<IFoo, Foo>();
var instance = container.GetInstance<IFoo>();
Assert.IsInstanceOfType(instance, typeof(Foo));
糟糕!我可能不是盒子里最尖锐的笔友,但是我现在该怎么办?我应该创建什么类和方法来“设置”,以便我可以遵循其余的示例? (我想我最好把它设置好以便它在整个项目中起作用)
顺便说一句:如果没有明确地在文档中添加这些步骤,那么在引用其他“手册页”时是否会错误?也许有各种方法来获取容器;我不知道我需要哪一个。在文档的这一点上,我只是在寻找“这将在90%的情况下工作”的例子,并链接到更专业的案例。
谢谢!
答案 0 :(得分:2)
你应该好好去。 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.");
}
}
}