如何在控制台应用中使用UnityResolver

本文关键字:UnityResolver 应用 控制台 | 更新日期: 2023-09-27 18:03:23

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

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

但是在控制台应用程序中,我没有httpconfiguration。我怎么能告诉我的unity容器使用这个DependencyResolver从我的控制台应用程序?

如何在控制台应用中使用UnityResolver

可能有更好的方法,但我先注册,然后让容器解析我的"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.
    }
}

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