gpt4 book ai didi

c# - 如何在 lightinject 中拦截工厂

转载 作者:太空狗 更新时间:2023-10-30 00:41:00 25 4
gpt4 key购买 nike

不确定在这里做什么。尝试拦截具有构造函数注入(inject)的工厂时,invocationInfo.Proceed() 总是失败。

var container = new ServiceContainer();
container.Register<ICool,Cool>();
container.Register<ILogger, Logger>();
container.Register<IInterceptor, LoggingInterceptor>();

//Two problem lines
container.Register<int, IAwesome>((factory, value) => new Awesome(value, factory.GetInstance<ICool>()));
container.Intercept(sr => sr.ServiceType == typeof(IAwesome), sf => sf.GetInstance<IInterceptor>());

var awesome = container.GetInstance<int,IAwesome>(100);
awesome.Yo();

在我的拦截器中这个方法失败了。

public class LoggingInterceptor : IInterceptor
{
private ILogger _logger;
public LoggingInterceptor(ILogger logger)
{
_logger = logger;
}
public object Invoke(IInvocationInfo invocationInfo)
{
var returnValue = invocationInfo.Proceed(); //Exception here
return returnValue;
}
}

异常(exception):

An exception of type 'System.InvalidCastException' occurred in LightInject.dll but was not handled in user code

Additional information: Unable to cast object of type 'System.Func`1[ConsoleApplication1.IAwesome]' to type 'System.Object[]'.

抱歉,我无法为 Lightinject 创建新标签。没有足够的代表:/

最佳答案

我是 LightInject 的作者,在拦截依赖于运行时参数的服务实例(例如 Awesome 类)时,已确认它是一个错误。

错误已修复,一旦有新的 NuGet 程序包可用,我会立即发回此处。

最好的问候

伯恩哈德·里希特

关于c# - 如何在 lightinject 中拦截工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23585134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com