1

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

我有接口IMyInterface:

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

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

IMyInterfaceMock.Name.Equals() 

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

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

4

2 回答 2

1

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

于 2010-01-08T16:55:28.877 回答
0

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

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

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

于 2010-01-08T19:03:58.090 回答