如何在控制台应用程序中使用UnityResolver?

6

我在我的WebApi项目中有以下解析器:

 config.DependencyResolver = new UnityResolver(container); // HttpConfiguration config

然而,在控制台应用程序中,我没有HttpContiguration。我该如何告诉我的Unity容器从我的控制台应用程序中使用此DependencyResolver?

2个回答

12

也许有更好的方法,但我会注册并让容器解决我的"first"类。

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类。

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.
    }
}

4
你不需要。 UnityResolver 的存在是为了与 MVC 框架交互。控制台应用程序没有框架,也没有控制台应用程序试图为您创建的框架类型。由于没有框架,因此在控制台应用程序中使用 DI 容器不需要任何特殊的钩子。你只需创建容器并调用一个 container.Resolve 来构造对象图并调用已解析对象上的方法即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接