我想在控制檯應用程序中使用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