我想在控制台应用程序中使用Autofac。这是我第一次使用。在此之前,我只在ASP.NET MVC中使用它。在MVC项目中,我可以在Global.asax中设置Autofac,向控制器注入IService,我们可以说它的工作量越来越少。 在控制台应用程序,我这样做如下:控制台应用程序中的Autofac(约定)
internal class Program
{
private static IContainer Container { get; set;}
private static void Main(string[] args)
{
Container = Container.Configure(); // here I have all necessary objects set
// now I can use it in Main method as:
using (var scope = Container.BeginLifetimeScope())
{
scope.Resolve<ISomething>();
}
}
}
它正如你所看到的用法是在短短的主要方法简单。如何在外部课堂上使用它?假设我想创建类Cat,并在其中使用Autofac。我应该通过类程序的构造器对象Container吗?例如:
Cat cat = new Cat(Program.Container, "Molly");
或者我应该在Cat类中创建IContainer?
什么是最佳解决方案?
梅森,谢谢你的宝贵答案。我想从第一篇文章中提出我的问题。正如你写的,我们可以创建任何对象INSIDE主要方法。如果我想在其他课程中使用Autofac,该怎么办? 比方说,我有类 '公共类的EmployeeService { 公务员getEmployee的(十进制的id){ // 这里我想用一些其他的服务:使用AutoFac注入。 //我应该再次在这里创建容器对象,然后: //使用(var scope = Container.BeginLifetimeScope()){...} } } – cube
@cube我不明白你在问什么现在。是的,你可以通过AutoFac创建一个对象的实例并通过构造器注入来注入东西。 – mason
我对我的理解感到困惑。然而你回答我的怀疑。再次感谢你。 – cube