如何从 class 库中的主应用程序使用 dryioc 容器
How to use dryioc container from main app in class library
我是 dryioc 的新手,请原谅我的无知:)
我想了解以下内容的正确方法,
正在创建一个控制台应用程序来创建 dryioc 容器的实例。在容器中注册一个记录器(作为单例)。然后从 class 库(单独的项目)中实例化一个 class 以在控制台应用程序中使用,并能够从 class 库中引用容器(主应用程序)以获取实例的记录器。因此 class 库将使用在控制台应用程序中注册的任何记录器。
我不希望将容器作为 class 库中构造函数的一部分传递。
感谢您的帮助。
像这样。可能适用于任何其他容器(甚至没有容器):
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 容器的实例。在容器中注册一个记录器(作为单例)。然后从 class 库(单独的项目)中实例化一个 class 以在控制台应用程序中使用,并能够从 class 库中引用容器(主应用程序)以获取实例的记录器。因此 class 库将使用在控制台应用程序中注册的任何记录器。
我不希望将容器作为 class 库中构造函数的一部分传递。
感谢您的帮助。
像这样。可能适用于任何其他容器(甚至没有容器):
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();
}
}
}