- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试学习 Unity 拦截器,而且我正在努力学习。
假设我有一个这样的界面:
public interface IMyInterface
{
void SomeMethod();
}
我有未知数量的类实现了这样的接口(interface):
public class SpecificClass1 : IMyInterface
{
public void SomeMethod()
{
Console.WriteLine("Method Called");
}
}
我正在寻找一种方式来表达“对于 IMyInterface 的所有实例(我不想枚举它们),当调用 SomeMethod 时运行我的拦截器。
给我带来麻烦的是类的非枚举。 (如果你能列举出你所有的类,还有很多例子。)
我读过类型拦截,但我似乎无法确定它是否能满足我的需求。
那里有 Unity 专家知道如何做我正在寻找的东西吗?
最佳答案
您可以创建 InterceptionBehavior
然后将其注册到特定类。请注意,您可以通过 IMethodInvocation 输入
Invoke
中的执行方法
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.InterceptionExtension;
using NUnit.Framework;
namespace UnitTests
{
[TestFixture]
public class ForTest
{
[Test]
public void Test()
{
IUnityContainer container = new UnityContainer().AddNewExtension<Interception>();
container.RegisterType<IMyInterface, SpecificClass1>(
new Interceptor<InterfaceInterceptor>(),
new InterceptionBehavior<MyInterceptionBehavior>());
var myInterface = container.Resolve<IMyInterface>();
myInterface.SomeMethod();
}
}
public interface IMyInterface
{
void SomeMethod();
}
public class SpecificClass1 : IMyInterface
{
#region IMyInterface
public void SomeMethod()
{
Console.WriteLine("Method Called");
}
#endregion
}
public class MyInterceptionBehavior : IInterceptionBehavior
{
public bool WillExecute
{
get { return true; }
}
#region IInterceptionBehavior
public IEnumerable<Type> GetRequiredInterfaces()
{
return Enumerable.Empty<Type>();
}
public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
{
IMethodReturn result = getNext()(input, getNext);
Console.WriteLine("Interception Called");
return result;
}
#endregion
}
}
控制台输出
Method Called
Interception Called
关于c# - 使用Unity拦截所有对IMyInterface.SomeMethod的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11909117/
我一直在努力理解一段这样的代码: class A { // some class definition } class B { public: virtual A *s
我知道 C# 中的 string 和 String 没有区别(除了为 System 添加的 using System .字符串)。仍然,和this SO-answer一样,当我调用 String.So
请看下面的程序:- class Main { public static void main(String[] args) { System.out.println(Boolean.TRU
我正在调查 Blazor,我无意中发现了这个表达式: @onclick="(() => SomeMethod(parameter))" 我无法在任何地方找到/谷歌这个(我猜是 lambda)表达式实
以下是合法的(据我所知): class Outer { void someMethod() { // do something } class Inner {
我知道 :: 是范围解析运算符。但是,如果某些内容仅以范围解析运算符开头,这意味着什么。我知道需要在范围解析运算符之前放置一些东西(类名或命名空间)。如果范围解析运算符之前没有任何内容怎么办。例如 :
我有这个代码: // .m - (void)viewDidLoad { NSMutableArray *array = [[NSMutableArray alloc] init]; [
我需要找到 EditorFor 的所有用法撤消我所做的愚蠢的事情。是否可以找到 Method 的所有用法?对于特定的 T ? 即使是 hack-y 解决方案也会受到赞赏。 最佳答案 如果您知道模型的类
在 hibernate 中创建我们使用的标准 Criteria criterea=session.createCritera(SomeClass.class) 它也可能在其他一些示例中可用,但我无法理
我们可以在抽象类的派生类中调用 super.someMethod() 吗? 例如: abstarct class TestBase{ void nonabstractMethod(){ .
我今天遇到了一个奇怪的语法。该代码来自 Gradle 的源文件,您可以在 src/core-impl/org/gradle/api/internal/artifacts/configurations/
这是我的主类(它使用子类:) import SubClass from './SubClass' class MainClass extends classes(SubClass) { const
页面上有一个带有 href="javascript:someMethod()" 的链接。我需要在 javascript 中以编程方式单击此链接。请不使用 eval() 和不使用 JQuery。 最佳答
当您只能使用简写 Id.something 时,写出 document.getElementById 有什么好处吗?我很感兴趣,因为我在我的教程中看到一些在线代码声明变量 x 等于 document.
我前段时间做了一个原型(prototype),使用 VSTO 并将其方法公开给其他项目。 现在,我尝试将我当时的成功使用实现到我目前正在从事的项目中,但它不起作用。 我收到一条异常消息“System.
这个我可以getChildAt(0).alpha = 0; 但这会引发错误getChildAt(0).gotoAndStop(2); 如何使用显示列表数组访问影片剪辑的方法? 最佳答案 getChil
什么是 (window)在 Angular2 中使用时? 我在研究 Stripe 支付库时发现的: (window).Stripe.card.createToken({ number: this.
我正在学习 JavaScript。 我发现了流行的扩展功能: function extend(Child, Parent) { var F = function() { } F.pro
(注意代码是示例) 我有以下语法: SomeMethod(() => x.Something) 表达式中的第一个括号是什么意思? 我也很好奇如何从传入的参数中获取属性名称。这可能吗? 最佳答案 Wha
当尝试使用 cxf-java2ws-plugin 生成 Web 服务工件时,它又使用 JAX-B,我在如下所示的方法中收到以下错误: Map myMethod(...); 更改方法签名是最后的手段
我是一名优秀的程序员,十分优秀!