首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何拦截光弹工厂

如何拦截光弹工厂
EN

Stack Overflow用户
提问于 2014-05-10 19:05:22
回答 1查看 1.6K关注 0票数 4

不知道该怎么做。当试图拦截具有构造函数注入的工厂时,invocationInfo.Proceed()总是失败。

代码语言:javascript
复制
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();

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

代码语言:javascript
复制
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;
    }
}

例外:

“System.InvalidCastException”类型的异常发生在LightInject.dll中,但未在用户代码中处理 其他信息:无法强制转换类型为‘System.Func’1ConsoleApplication1.IAWMEN‘类型'System.Object[]’的对象。

对不起,我不能为照明弹做一个新的标签。代表不足:/

EN

回答 1

Stack Overflow用户

发布于 2014-05-13 14:32:36

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

这个bug已经修复,我将在新的NuGet包可用后立即在这里发布。

诚挚的问候

伯恩哈德里克特

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23585134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档