首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误激活IInterceptor..。只通过COM?

错误激活IInterceptor..。只通过COM?
EN

Stack Overflow用户
提问于 2013-08-23 05:01:42
回答 1查看 957关注 0票数 3

Kernel.Get<T> 在.net/WPF应用程序调用时工作,但与内部的(从VB6应用程序调用 TargetInvocationException**)时)一起爆炸。什么?**

这是对this question的一种跟踪,我在那里配置了一个抽象工厂,它使用Ninject约定,这样的话,我就不需要实际实现一个了,Ninject工厂扩展负责在运行中生成一个工厂。

效果很好..。直到我需要从VB6代码运行我的库。

代码语言:javascript
复制
_kernel.Bind(t => t.FromAssemblyContaining(typeof(ViewModelBase))
       .SelectAllInterfaces()
       .EndingWith("ViewFactory")
       .BindToFactory());

一旦我从VB6代码中调用应用程序上的任何内容,如果我将依赖关系的解析包装在try/ ActivationException块中,我就会用内部ActivationException捕获一个ActivationException

使用IInterceptor提供程序的条件隐式自绑定激活IInterceptor错误返回null。激活路径: 3)将依赖IInterceptor注入到IViewFactoryProxy类型构造函数的参数中。 2)将依赖IViewFactory注入到MsgBox类型构造函数的参数viewFactory中 1) IMsgBox请求 建议: 1)确保提供程序正确处理创建请求。

我没有提到Ninject.Interception扩展(此时)。

奇怪的是,如果我在调试时没有启动VB6,而是启动了一个沙箱WPF测试应用程序,那么我没有得到任何ActivationException,而且一切都很有魅力。

VB6代码与automation error -2146232828 (80131604)一起死掉,而automation error -2146232828 (80131604)在谷歌上没有任何结果,但我猜它与抛出的TargetInvocationException有关。

就.net代码而言,它只是起作用:如果我从WPF客户端编写应用程序,我可以在MsgBox类构造函数中插入,并看到IViewFactory参数对Castle.Proxy.IViewFactoryProxy很满意;如果我从VB6 ActiveX DLL (我还创建了一个VB6 EXE来测试并与DLL相同)编写应用程序,它就会崩溃。

更新

我删除了通用抽象工厂,不再得到这个错误。因为我不想写工厂,所以我选择了一些我可以忍受的更紧密的耦合。现在我想知道为什么会发生这种事!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-04 11:52:25

今天我遇到了一个与你们完全不同的异常。我试图在VS WPF设计器的设计时视图模型中使用一个配置了自定义模块的内核。该模块具有许多使用ToFactory()扩展方法配置的接口。

问题是,由于某些原因,当我初始化内核时,Ninject.Extensions.Factory.FuncModule没有自动加载,这可能是因为VS设计器处理创建设计时类的方式有些诡计(可能它没有加载适当的程序集或其他什么东西,谁知道)。

我有一个单元测试,它创建了这些设计时视图模型之一,它工作得非常完美,所以它肯定是与设计人员相关的东西。

我通过为我的设计时视图模型创建一个特殊内核来解决这个问题。

代码语言:javascript
复制
public class DT_Kernel : StandardKernel
{
    public DT_Kernel()
        : base(new MyModule())
    {
        if (!HasModule(typeof(FuncModule).FullName)) 
        {
            Load(new[] { new FuncModule() });
        }
    }
}

这段代码的重要部分是如果还没有加载FuncModule的话加载它的位。

您可以利用这些代码来解决问题。

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

https://stackoverflow.com/questions/18395022

复制
相关文章

相似问题

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