Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# unity能否将代码注入到非';t控制器?_C#_Dependency Injection - Fatal编程技术网

C# unity能否将代码注入到非';t控制器?

C# unity能否将代码注入到非';t控制器?,c#,dependency-injection,C#,Dependency Injection,我有一个.net核心应用程序,它使用如下启动方式: public void ConfigureContainer(IUnityContainer container) { container.RegisterInstance(typeof(ILogger), "log", _Log); } 然后我开始我的程序.cs,如下所示: public class Program { public static void Main(str

我有一个.net核心应用程序,它使用如下启动方式:

    public void ConfigureContainer(IUnityContainer container)
    {
        container.RegisterInstance(typeof(ILogger), "log", _Log);
    }
然后我开始我的程序.cs,如下所示:

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseUnityServiceProvider()
            .UseStartup<Startup>();
}

如果我在这个解决方案中有另一个.net核心项目用作类库,我可以自动将我的记录器插入到另一个项目的类中吗?我可以对使用注册接口实现的nuget包执行同样的操作吗?

我有几十个类库需要记录器,但我不想在任何地方都用新的上下文创建这些记录器。我宁愿在入口点从web应用程序传入我的单个记录器,或者让Unity为我旋转它们


我原以为dotnet核心类库可以使用它们自己的启动文件,但当我尝试从Program.cs文件调用它们时,它们从未被调用。请注意,我没有使用.Net标准类库,因为我的类库需要经常使用HttpContext,所以它们使用.Net Core。

您所说的“自动”是什么意思?您必须提供类型为
ILogger
(构造函数注入)的构造函数参数或公共可设置属性(对于较少见的属性注入情况)。可能inject是错误的词。如果可能的话,我只想以某种方式获取记录器。“我能自动将记录器注入到其他项目的类中吗?”您真的尝试过这个吗?应该是开箱即用的。如果没有,请发布一个最小的、可复制的示例来演示问题。@Kit当您使用属性注入时,是否必须显式设置属性?或者您只是在某种统一方法中提供属性的名称来“注册”属性的值吗?
public class QuestionController : ControllerBase
{
    private readonly ILogger _Log;
    private readonly IServiceProvider _ServiceProvider;

    public QuestionController(IServiceProvider serviceProvider, ILogger log)
    {
        _ServiceProvider = serviceProvider;
        _Log = log; // this works and does what I want.
    }