激活 IInterceptor 时出错...仅通过 COM?

2024-06-28

TL;DR: Kernel.Get<T>从 .net/WPF 应用程序调用时可以工作,但会因内部原因而崩溃ActivationException(在一个TargetInvocationException) 当从 VB6 应用程序调用时。啥?

这是一个后续这个问题 https://stackoverflow.com/questions/17729630/setting-up-a-convention-for-automatic-factories我使用 Ninject 约定配置了一个抽象工厂,这样我就不需要实际实现一个抽象工厂,Ninject 工厂扩展负责即时生成一个抽象工厂。

这工作得很好......直到我需要从 VB6 代码运行我的库。

_kernel.Bind(t => t.FromAssemblyContaining(typeof(ViewModelBase))
       .SelectAllInterfaces()
       .EndingWith("ViewFactory")
       .BindToFactory());

一旦我从 VB6 代码调用应用程序上的任何内容,如果我将依赖项的解析包装在 try/catch 块内,我就会捕获一个TargetInvocationException具有内在的ActivationException:

使用条件隐式自绑定激活 IInterceptor 时出错 IInterceptor Provider 返回 null。激活路径:

3) 将依赖项 IInterceptor 注入到 IViewFactoryProxy 类型的构造函数的参数中

2)将依赖项IViewFactory注入到MsgBox类型的构造函数的参数viewFactory中

1) 请求 IMsgBox

建议:

1) 确保提供者正确处理创建请求。

我没有参考 Ninject.Interception 扩展(此时)。

奇怪的是,如果我在调试时启动沙箱 WPF 测试应用程序而不是启动 VB6,我不会得到任何结果ActivationException一切都像魅力一样。

VB6 代码终止于automation error -2146232828 (80131604)这在谷歌上没有产生任何结果,但我猜这与TargetInvocationException被抛出。

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

UPDATE

我删除了通用抽象工厂,并且不再出现此错误。因为我不想编写工厂,所以我选择了一些我可以忍受的更紧密的耦合。现在我想知道why这件事正在发生!


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

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

我进行了一个单元测试,该测试正在创建这些设计时视图模型之一,并且它运行得很好,因此它绝对与设计器有关。

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

public class DT_Kernel : StandardKernel
{
    public DT_Kernel()
        : base(new MyModule())
    {
        if (!HasModule(typeof(FuncModule).FullName)) 
        {
            Load(new[] { new FuncModule() });
        }
    }
}

此代码的重要部分是加载 FuncModule(如果尚未加载)的位。

您也许可以利用该代码来解决您的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

激活 IInterceptor 时出错...仅通过 COM? 的相关文章

  • 将反序列化方法转换为异步

    我正在尝试使用 Async Await 转换此将对象反序列化为字符串的方法 public static T DeserializeObject
  • 信用卡号应该存储为字符串还是整数?

    是啊 只是想想而已 我应该将在我的网站上输入的信用卡号存储为字符串还是整数 我的意思是 它们由数字组成 这让我认为它是一个整数 但我不对它们进行数学运算 所以也许字符串更合适 编辑 所以我必须在加密之前存储在某个时刻输入的数字 我可能应该更
  • 在 SelectSingleNode 中使用 XPath:从 XML 中检索单个元素(如果存在)

    我的 XML 看起来像
  • 我想要 Linux 上的 C 函数来收集核心转储而不终止进程

    abort 确实收集核心转储 但我不希望进程终止 dump core 收集核心转储 但在内核空间中 用户空间中是否有与 dump core 等效的函数 自己做的一个简单方法是fork进程 创建父进程的完整副本 并调用abort来自子进程 子
  • 如何正确使用memcpy?

    我有一个mainbuf bufsize 最初为空 我正在阅读一些输入 read fd otherbuf sizeof otherbuf 分配给不同的字符串otherbuf 每次我分配一个新字符串给otherbuf我想将其附加到mainbuf
  • 使用 C# 将文件列表从 ftp 下载到本地文件夹? [复制]

    这个问题在这里已经有答案了 我希望将 ftp 中的所有文件下载到本地文件夹 下载到本地驱动器后 所有文件都应在 ftp 中删除 从下面的代码 我只能从 ftp 下载一个我不期望的文件 我需要将所有文件放在一个文件夹中 但不放在本地文件名的名
  • 无符号长十六进制表示

    include
  • 如何将值从 ASP.NET MVC 控制器传递到 MVC 视图内的 ASP.NET Webforms 控件?

    我的 ASP NET MVC 方法并未跨越 ASP NET Web 窗体 因此我很难理解如何更好地将值从 ASP NET MVC 控制器传递到 MVC 视图内的 ASP NET Webforms 脚本 例如 控制器动作 public Vie
  • 如何为 IAsyncOperation 指定回调方法

    是否可以指定一个方法完成后调用async手术 平台 C Windows Phone 8 我需要实现非阻塞方法来异步发送UDP数据包 他们有我的方法 onWriteComplete int errorCode 操作完成时回调 这是我尝试过的
  • 如何重命名 MacOS/X 程序中的程序名称菜单标签?

    我有一个在 MacOS X 下运行的基于 Qt 的 GUI 程序 我希望能够更改该程序的第一个菜单标题的标签 即此屏幕截图中用红色圈出的标签 有没有一种编程方法可以做到这一点 假设不存在基于 Qt 的解决方案 则 Objective C 本
  • 编译器错误? g++ 允许可变大小的静态数组,除非函数是模板化的

    下面的代码演示了我无法解释的 gcc 4 6 2 的行为 第一个函数声明一个 vec t 类型的静态数组 其中 vec t 是 unsigned char 的 typedef 别名 第二个函数是相同的 只是 vect t 的类型是模板参数
  • NHibernate 继承 - 判别器值

    NHibernate 是否可以有一个像这样工作的判别器 如果值等于 String Empty gt Class1 其他 gt Class2 我已经有一个 CultureName 字符串列 我想将其用作鉴别器 我不想添加额外的布尔列 如果 C
  • Linux 相当于 GetCommandLine 和 CommandLineToArgv?

    我想知道是否有一些 API 可以在 Linux 上获取当前进程的命令行参数 我想我是非常不清楚的 该问题的真正目的是通过命令行参数传递 unicode 文件名 从文件中读取 proc self cmdline 例如 wallyk zf od
  • 网页上的富文本编辑器

    我正在尝试在我的网页中添加一个富文本编辑器 用户可以在其中撰写评论并格式化他们所写的内容 类似于我们在此网站上撰写帖子的编辑器 谁能指出我关于此的正确方向 任何可以帮助我构建这样一个组件的教程 我还想要一个免费的产品 忘记之前提到 类似的东
  • 检测非 DPI 感知应用程序是否已扩展/虚拟化

    我正在尝试在 WinForms 应用程序中检测它是否由于操作系统具有高 DPI 而以缩放 虚拟化模式启动 目前 在以 3840x2400 缩放 200 缩放运行的系统中 应用程序将分辨率视为 1920x1200 DPI 为 96 缩放因子为
  • MVC - 从视图调用控制器

    我是 MVC 新手 我正在使用 MVC 开发一个 Web 应用程序 该应用程序仅包含一个页面 所以在这个视图中我必须填充多个数据 假设应用程序是 新闻提要 应用程序 我需要填充最近的新闻 您喜欢的新闻 您朋友推荐的新闻等 那么我应该从视图到
  • 如何在C++中动态调用函数

    除了 boost Bind Function 之外 我如何在 C 中动态调用函数 PHP has obj new MyObject function doSomething obj gt function Objective C 有 MyO
  • 着色器可以旋转形状以面向相机吗?

    我制作了一个球出现在 3D 空间中的场景 三角球耗费大量资源 所以我使用带有球纹理的二维表面 四边形 来完成此操作 但现在我需要在每次相机移动时调整形状的方向 我使用位置变换和 LookAt 方法来完成此操作 问题是我可以优化这个吗 如果可
  • 在字典和集合上自动添加索引器是一个好的设计决策吗?

    索引器何时可以自动将项目添加到集合 字典中 这是合理的还是违反最佳实践的 public class I snip public class D Dictionary
  • C++ 中的 golang 风格“延迟”[重复]

    这个问题在这里已经有答案了 我正在阅读有关 go 语言的defer http blog golang org defer panic and recover陈述 它允许您指定函数结束时要执行的操作 例如 如果您有一个文件指针或资源 则只需指

随机推荐

  • 我以前从未见过的奇怪的 xCode 链接器错误说“断言失败”

    通过Unity构建了这个游戏 并通过xCode成功编译过一次 然而 如果没有任何明显的变化 就会出现此错误消息 我不明白从哪里开始寻找解决方案 但也许其他人有线索 我通过搜索看到了类似的错误 尽管与我的相比 这些修复似乎是任意的 有人能透露
  • JavaScript HTTP 请求失败

    有人可以看一下下面的代码帮助我找出我做错了什么吗 我收到这个错误 错误 XMLHttpRequest readyState 1 超时 0 withCredentials false 上传 XMLHttpRequestUpload respo
  • 如何解析带引号字段中嵌入逗号的 CSV?

    我已经尝试了其他答案中提到的一些修复 但它们对我的输出没有影响 我不打算使用Boost Spirit 因为我不确定它是满足我需求的最佳选择 此外 类似的帖子不处理包含逗号的引用材料 这是我此时要解决的最后一个问题 这是一个 C 程序 我使用
  • 从 Chrome 扩展程序访问 Google Apps 脚本 API 导致 403 错误

    我想通过 Google Chrome 扩展程序在外部使用 Google AppScript 功能编辑我的 Google 文档 为了实现这一目标 我执行了以下步骤 通过 Google Docs 设置脚本Tools gt Script Edit
  • nAnt 是否仍受支持并适用于 .net 3.5/VS2008?

    我正在使用 MSBuild 来构建我的东西 我想通过构建服务器使用 CruiseControl net 现在 CCNET 经常引用 nAnt 但看起来 ccnet 可以通过项目配置和 msbuild 完成 nant 可以完成的大部分工作 另
  • Python对象实例中的dict不包含该类的方法

    当创建对象的实例时 它的字典不包含类方法 一个例子是 class A object def init self value self value value def some func self pass instance A some v
  • Kivy 中的脉动背景颜色

    我是 kivy 的新手 但我真的很坚持这一点 有没有办法在画布上有类似于 CSS 中的这种效果的脉冲背景 https codepen io LukeAskew pen gabgom https codepen io LukeAskew pe
  • 使用 TOX 运行 Flake8 测试时出现 Unicode 错误

    我是 Tox 新手 我想将其设置为在我的项目上运行 flake8 测试 但当我尝试运行 tox 时 我不断收到 unicode 错误 UnicodeDecodeError ascii codec can t decode byte 0xe2
  • 如何编写基于线程的并行列表迭代?

    我需要一个如何使用 ocaml 线程编写并行 iter 函数的示例 我的第一个想法是有一个与此类似的函数 let procs 4 let rec part part i lst match lst with gt hd tl gt let
  • Hashie::Mash 从字符串恢复

    我在这个问题上很挣扎 我已经存储了一个Hashie Mash到一个字符串中 我很难将其恢复为哈希值 这是字符串 map Hashie Mash ncreated at Mon Jul 30 15 42 20 0000 2012 nid 22
  • IOS 7 中的外部蓝牙键盘集成

    我需要在应用程序中支持外部键盘功能 并且需要在应用程序中检测到 Alt Tab Tab 等组合键以触发某些事件 在 IOS 6 中我已经重写了 void sendEvent UIEvent anEvent 函数在UIApplication
  • Spring属性文件设置默认值

    我的 war 文件之外有一个属性文件 系统管理员使用该文件来关闭某些系统功能 它在我的本地计算机上运行得很好 但是当我们部署到开发环境时 属性文件未上传 应用程序无法启动 我想知道是否有一种方法可以在我的 applicationContex
  • Twitter Bootstrap 按钮在 IE8 中无响应

    IE 对我来说是个谜 我的网络应用程序可以在 Safari Firefox Chrome 甚至 iPhone 和 iPad 上运行 但当涉及到 IE 时 我根本无法理解遵守给定标准有多么困难 无论如何 足够的咆哮 我的 Twitter 引导
  • 有没有例子展示如何编写 DirectShow 转换过滤器?

    我想捕获当前帧及其前一帧进行分析并生成一个新帧来显示 是说我必须写一个变换DirectShow过滤器吗 但我是 DirectShow 的新手 我被MSDN的大量文档弄糊涂了 所以我想知道是否有任何简单的例子来展示如何做到这一点 谢谢 厨师
  • 在 Bitbucket API 中,如何获取所有许可用户的列表?

    我看过Bitbucket API 文档 https developer atlassian com bitbucket api 2 reference resource 和这篇文章BitBucket 获取所有贡献者列表 https stac
  • 如何创建 Azure.AsyncPageable 进行模拟?

    我想模拟一个返回一个 C 方法Azure AsyncPageable 这个类只有受保护的构造函数 所以我不能直接实例化它 有没有办法从其他集合 例如IAsyncEnumerable或者只是一个List 您可以创建Page物体using Pa
  • 如何将一串空格分隔的数字拆分为整数?

    我有一根绳子 42 0 例如 并且需要获取两个整数的数组 我可以做一个 split在一个空间上 The obvious approach to this problem is a common combination of simple t
  • Jackson:在反序列化时获得空引用

    我正在使用 spring mvcrestful服务 通过添加依赖项 我的其余控制器会自动generate json从我的response entities 依赖性 jackson 2 9 0 compile com fasterxml ja
  • 在 Javascript 变量声明中使用逗号[重复]

    这个问题在这里已经有答案了 我刚刚遇到以下代码 function showMatch str reg var res matches while true matches reg exec str if matches null break
  • 激活 IInterceptor 时出错...仅通过 COM?

    TL DR Kernel Get