如何在控制台应用程序中使用 UnityResolver?
How to use UnityResolver in Console App?
我的 WebApi 项目中有以下解析器:
config.DependencyResolver = new UnityResolver(container); // HttpConfiguration config
但是在控制台应用程序中,我没有 HttpContiguration。我怎样才能告诉我的统一容器从我的控制台应用程序使用这个 DependencyResolver?
可能有更好的方法,但我先注册,然后让容器解析我的 "first" class.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Registering dependencies ...");
var container = new UnityContainer();
container.RegisterType<ProgramStarter, ProgramStarter>(); // Register a class that continues your program.
// Do your registrations.
RegisterTypes(container);
// Let Unity resolve ProgramStarter and create a build plan.
var program = container.Resolve<ProgramStarter>();
Console.WriteLine("All done. Starting program...");
program.Run();
}
}
还有我的ProgramStarter
class.
public class ProgramStarter
{
private readonly IService _service;
public ProgramStarter(IService service)
{
// Unity has created this instance and resolved all dependencies.
_service= service;
}
public void Run()
{
// Do what you want to do.
}
}
你不知道。 UnityResolver
的存在是为了与 MVC 框架交互。控制台应用程序不是框架,也没有控制台应用程序试图为您创建的框架类型。由于没有框架,因此在控制台应用程序中使用 DI 容器不需要特殊的挂钩。您只需创建容器并进行一次 container.Resolve
调用即可构造对象图并调用已解析对象的方法。
我的 WebApi 项目中有以下解析器:
config.DependencyResolver = new UnityResolver(container); // HttpConfiguration config
但是在控制台应用程序中,我没有 HttpContiguration。我怎样才能告诉我的统一容器从我的控制台应用程序使用这个 DependencyResolver?
可能有更好的方法,但我先注册,然后让容器解析我的 "first" class.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Registering dependencies ...");
var container = new UnityContainer();
container.RegisterType<ProgramStarter, ProgramStarter>(); // Register a class that continues your program.
// Do your registrations.
RegisterTypes(container);
// Let Unity resolve ProgramStarter and create a build plan.
var program = container.Resolve<ProgramStarter>();
Console.WriteLine("All done. Starting program...");
program.Run();
}
}
还有我的ProgramStarter
class.
public class ProgramStarter
{
private readonly IService _service;
public ProgramStarter(IService service)
{
// Unity has created this instance and resolved all dependencies.
_service= service;
}
public void Run()
{
// Do what you want to do.
}
}
你不知道。 UnityResolver
的存在是为了与 MVC 框架交互。控制台应用程序不是框架,也没有控制台应用程序试图为您创建的框架类型。由于没有框架,因此在控制台应用程序中使用 DI 容器不需要特殊的挂钩。您只需创建容器并进行一次 container.Resolve
调用即可构造对象图并调用已解析对象的方法。