小编phi*_*252的帖子

Autofac:注册组件并根据解析父级进行解析

我想要注册一个组件来解析基于它可能解析的类的参数.(这听起来有点令人困惑,所以我将展示一个例子).

这是一个使用记录器的对象:

class MyObject : IMyObject
{
    public ILogger Logger;
    public MyObject(ILogger logger)
    {
        Logger = logger;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,在COULD中传递的记录器在类与类之间是不同的.所以我对如何做到这一点有一个相当修补的想法:

class MyLogger : ILogger
{
    public string Name{get; protected set;}

    public static ILogger GetLogger(string className)
    {
        Name = className;
        MyLogger logger;
        // Do something to choose a logger for that specific class
        return logger;
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,当我注册Logger时,我希望能够告诉它className.我希望有一种方法可以做到这一点:

ContainerBuilder builder = new ContainerBuilder();

builder.Register<MyLogger>(ctx =>
    {
        string className = //Get resolving class name somehow;
        return MyLogger.GetLogger(className);
    }).As<ILogger>();

builder.Register<MyObject>().As<IMyObject>();

var container = …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection autofac

11
推荐指数
1
解决办法
6264
查看次数

标签 统计

autofac ×1

c# ×1

dependency-injection ×1