假设我有一个像这样的 MVC 核心 Controller :
public class SomeController
{
public SomeController(IConfiguration appConfig, Func<string> someDelegate)
{
}
}
此外,我正在使用 AutoFac 来解决注入(inject)。对象注入(inject)工作完美,同时添加委托(delegate)注入(inject)会产生 ASP.NET Core 异常,该异常表明 Func<string>
无法注入(inject),因为没有可以注入(inject)此类类型的组件。
当我尝试手动解析 SomeController
时使用 AutoFac 我得到了所需的行为。
有没有办法在不使用 AutoFac 解析 Controller 的情况下支持这种情况?
最佳答案
我自己刚刚遇到了这个问题,所以我想我应该分享一下以供将来引用,因为我有一个案例,我想解决一个委托(delegate),但包含一个额外的库似乎有点矫枉过正。
给出以下定义:
public interface ISomething { /*...*/ };
public interface ISomeService { /*...*/ }
public class SomeService : ISomeService { /*...*/ }
public class Something
{
public Something(ISomeService service, string key) { /*...*/ }
}
// I prefer using a delegate for readability but you
// don't have to use one
public delegate ISomething CreateSomething(string key);
代理可以这样注册:
var builder = services
.AddSingleton<ISomeService, SomeService>()
.AddTrasient<CreateSomething>(provider => key => new Something(provider.GetRequiredService<ISomeService>(), key));
关于c# - 无法使用 ASP.NET Core DI 注入(inject)委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45235717/