DynamicProxy2和代理链接

时间:2010-01-08 03:01:58

标签: .net proxy castle-dynamicproxy

我需要代理代理的属性类型。所以案件将是:

我有IMyInterface接口:

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

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

IMyInterfaceMock.Name.Equals() 

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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