dryioc - 如何从类库中的主应用程序使用 dryioc 容器

标签 dryioc

我是 dryioc 新手,请原谅我的无知:)

我想了解以下正确的方法是什么,

创建一个控制台应用程序来创建 dryioc 容器的实例。在容器中注册一个记录器(作为单例)。然后从类库(单独的项目)中实例化一个类以在控制台应用程序中使用,并能够从类库中引用容器(主应用程序)以获取记录器的实例。因此,类库将利用在控制台应用程序中注册的任何记录器。

我不想将容器作为类库中构造函数的一部分传递。

感谢您的帮助。

最佳答案

类似这样的事情。对于任何其他容器(甚至没有容器)可能都是如此:

namespace Core
{
    public interface ILogger 
    {
        void Log(string message);
    }
}

namespace Lib
{
    using Core;

    public class Foo
    {
        readonly ILogger _logger;
        public Foo(ILogger logger) 
        {
             _logger = logger;
        }

        public void DoSomething()
        {
             _logger.Log("About to do something ...");
        }
    }
}

namespace ConsoleApp
{   
    using System;

    using Core;
    using Lib;

    using DryIoc;

    public class ConsoleLogger : ILogger 
    {
        public void Log(string message)
        {
            Console.WriteLine(message);
        }
    }

    public class Program
    {
        public static void Main()
        {
            var c = new Container();

            c.Register<ILogger, ConsoleLogger>(Reuse.Singleton);
            c.Register<Foo>();

            var foo = c.Resolve<Foo>();
            foo.DoSomething();
        }
    }
}

关于dryioc - 如何从类库中的主应用程序使用 dryioc 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39051673/

相关文章:

c# - IoC - 使用注入(inject)的对象参数解析 WPF 窗口

c# - DryIoc 递归依赖异常与工厂(Func<>)

c# - 使用 DryIoc 解决多个注册之一

c# - DryIoc.WebApi 设置

c# - 开放满足多接口(interface)的通用单例服务注册

c# - 使用依赖注入(inject)时避免单例存储库(DryIoc)

dryioc - 如何从 DryIoc 中解析的实例获取隐式创建的范围?

c# - 根据触发解析的父树解析参数?

logging - 在 DryIoc 容器中注册 ILoggerFactory

c# - DryIoc 范围和重用