【问题标题】:DynamicProxy2 and Proxy ChainingDynamicProxy2 和代理链
【发布时间】:2011-01-02 18:29:13
【问题描述】:

我需要代理代理的属性类型。所以情况是:

我有接口IMyInterface:

public interface IMyInterface
{
    public String Name {get; set;}
    public Int Id {get;set;}
}

我可以很好地模拟界面,但我希望能够模拟例如 Name 属性。我意识到 String 不能被嘲笑,因为它是密封的。我希望看到的功能是:

IMyInterfaceMock.Name.Equals() 

应该由拦截器处理。我无法想象现有框架甚至可以做到这一点,因为我将更改属性的类型,但我想知道是否有一种聪明的方法来实现这一点。有什么方法可以插入代理生成并修改代理的属性的返回类型?

我认为 DynamicProxy2 不可能,但我想知道是否有人知道一些魔法。

【问题讨论】:

    标签: .net proxy castle-dynamicproxy


    【解决方案1】:

    一个。您不能修改返回的类型,因为这意味着无效的覆盖。 湾。即使你可以,你也不能覆盖字符串上的任何东西,它是密封的,所以不 - 在 CLR 上使用普通的强类型编程语言是不可能的。

    【讨论】:

      【解决方案2】:

      我意识到该类型将是无效的覆盖。我真正想要的是一种生成动态类型的方法。我使用 System.Reflection.Emit 类完成了这项工作。

      我创建了一个动态类型,其中属性 Types 是我可以拦截的众所周知的类型。

      我应该解释说我正在将代理对象写入 PowerShell 管道,因此并不真正关心发出的类型。我只需要一种方法来评估比较运算符。

      【讨论】:

        猜你喜欢
        • 2011-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-09
        • 2011-02-09
        • 1970-01-01
        • 2010-10-24
        • 1970-01-01
        相关资源
        最近更新 更多