问题标签 [unity-interception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1800 浏览

c# - 为什么Unity拦截不能捕获异常?

在我的方法中抛出异常时,我遇到了 Unity 拦截问题。请参考我的示例应用程序,如下所示:

AuditLogging 行为实现以下代码:

Interface1.cs 和 Implementation1.cs 如下:

日志文件指出异常没有写下来。我遗漏了一些东西,或者 Unity 拦截无法按预期工作。下面的日志文件应该有[EXCEPTION],但没有这样的:

顺便说一句,我使用的是企业库版本 5 和 Unity 版本 2.0。

0 投票
1 回答
2024 浏览

c# - 城堡拦截器不拦截

我有很多要添加日志记录的代码。我的计划是使用 Unity 或 Castle.Windsor 创建截获的日志记录例程,并使用自定义 C# 属性将其添加到现有代码中。我无法更改现有的代码结构(但我可以为其添加启动配置,因此容器注册的方式是可以的)。

在不更改调用结构的情况下,这对于 Unity 来说是不可能的(获取拦截的类需要更改实例化以使用注册的依赖注入),所以我正在尝试 Castle.Windsor。我拥有的这段代码没有触发拦截例程。

这给了我一些希望,在 Castle.Windsor 中它是可能的: Inject logging dependency with Castle Windsor

我有更好的方法来进行这种日志注入吗?PostSharp 编织将是理想的,但我不能使用它(费用和许可)。

0 投票
1 回答
325 浏览

.net - 从 AttributeHandler 访问 UnityContainer

当方法用特定属性修饰时,我有 Unity 设置来拦截方法调用。我希望所有 Unity 代理对象都保留在每个线程中(而不是暂时的)。

问题是装饰属性创建的对象每次都是“新”创建的。我看不到从属性中访问 UnityContainer 的方法。如果可以的话,我会将 LogHandler 创建为每个线程实体并通过 Unity 请求它。(这甚至有意义吗?使用 Unity 来解析用于统一拦截的对象?)。

如果您运行此代码,则记录器输出的计数始终为“1”。需要明确的是,这个“LogHandler”是我想要坚持的。

您如何通过代码中其他地方的统一来解析对象?你绕过统一容器吗?有没有一种模式可以用来从我的代码中的任何地方请求它?

0 投票
1 回答
1911 浏览

c# - 在统一 c# 中使用默认构造函数和参数化构造函数

我有一个使用统一固件来解析对象的应用程序。我对框架和类进行了一些更改,这些更改可以在代码注释中看到为“NEW CHANGE”

包装类看起来像

配置看起来像

类和接口看起来像

用法看起来像

新的变化打破了旧的用法。IE

引发异常 依赖项解析失败,type = "UnityTest.IImageRepositoryService",name = "(none)"。异常发生时:解决时。异常是: InvalidOperationException - 无法构造类型 String。您必须配置容器以提供此值。

我想拥有新功能的同时又不想破坏旧功能。

应在控制台中显示消息“过滤器 StandardImageFilter 中找到的图像 myimage.bmp”

应在控制台中显示消息“过滤器 filter1 中找到的图像 myimage.bmp”

应在控制台中显示消息“过滤器 filter2 中找到的图像 myimage.bmp”

如何解决这个问题?

0 投票
1 回答
740 浏览

c# - 执行分配给类和属性的 Unity HandlerAttributes 时的顺序不同

我有 3 个属性用于 Unity v2.1 中的 Inteception 管道。一切都正常启动,只是顺序错误。

在所有 3 个属性中,我确保我从属性传递了相应的处理程序。

因此,如果我在下面的 TestClass.TestProperty 上调用 setter,我希望调用处理程序应按以下顺序调用:Validation、Transaction、Notify。我看到的是Notify, Transaction, Validation

我在这里有 2 个问题,我无法找到使用谷歌搜索的答案。

  1. 在我设置 TestClass.TestProperty 的示例中,是否假设先调用属性属性然后调用类属性?还是 Unity 应该尊重我的命令?
  2. 如果首先调用 2 个属性处理程序,我应该看不到Notify, Transaction。如果我覆盖 Transaction 和 Notify Order 的默认值分别为 1 和 2,我会得到Transaction, Notify的预期。我的订单从 1 开始是否重要。

    /li>
0 投票
0 回答
265 浏览

unity-container - 调试器进入 IInterceptionBehavior。调用

我有统一拦截器实现了 IInterceptionBehavior.Invoke,一切正常,但是在 VS 调试器中,如果我单击代理对象上的步进,它不起作用(我希望跳转到目标方法或至少跳转到我的 Invoke 方法)。VS 调试器的行为类似于跨步。我是否应该提供一些属性作为提示 VS 知道它应该跳入它而不是忽略它

谢谢

0 投票
1 回答
503 浏览

unity-container - Unity拦截方法SignatureMatchingRule无法解析

我使用 Unity (3.0) 拦截向我的应用程序添加一些横切关注点。不知何故,我无法在配置中使用 MethodSignatureMatchingRule 收到此错误消息:

我的配置:

NamespaceMatchingRule 相同的配置可以正常工作。

我的程序集包含对

  • Microsoft.Practices.EnterpriseLibrary.Common
  • Microsoft.Practices.Unity
  • Microsoft.Practices.Unity.Configuration

有什么建议么?

0 投票
2 回答
1399 浏览

c# - 为什么我的自定义呼叫处理程序没有被调用?

我试图了解如何在 Unity 中使用调用处理程序。这是我到目前为止的代码:

但是TestCallHandler.Invoke从不调用,它只是Foo.Test直接调用。我错过了什么?

0 投票
1 回答
564 浏览

c# - 统一拦截概念清晰

我正在关注Unity Interception链接,以便在我的项目中实施 Unity。

通过一个链接,我创建了一个类,如下所示:

到目前为止,我没有做任何特别的事情,只是按照上面链接中解释的示例进行操作。但是,当我必须实现 Unity Interception 类时,我遇到了很多困惑。

假设,我必须实现类中的一种方法,例如:

这是我被卡住的主要事情,我不知道我必须如何在GetModelByID()方法上使用 Intercept 类以及如何获得统一。

请帮帮我,也请解释一下Unity拦截的概念。

0 投票
1 回答
889 浏览

c# - 统一解决单个接口的多个实现

我有以下情况:

在客户端:

解析 2(参见注释)给出了一个找不到构造函数的错误。

我基本上希望它解析为 Foo2 类。我什至尝试使用参数覆盖,但这也不起作用。

请帮助我。