如何使用反射创建动态代理类

时间:2011-05-07 23:41:25

标签: c# .net dynamic

鉴于以下界面:

public interface ITest
{
    string PropTest1 { get; set; }
    int PropTest2 { get; set; }
}

如何创建一个动态代理类来实现接口ITest并返回两个属性的值?

另外,对于生产系统来说这会慢吗?

由于

2 个答案:

答案 0 :(得分:2)

  

如何创建动态代理类   这将实现接口   两者的ITest和返回值   特性

看看嘲笑图书馆,即犀牛嘲笑或Moq - 这正是这些允许你做的事情(然后是一些) - 无需重新发明轮子。

由于这是使用反射来创建代理,因此与常规代码相比,它将非常慢 - 这一切都取决于方案是否可接受。

答案 1 :(得分:0)

对于perf,生成类型可能需要一点时间,但是一旦你拥有它,制作它的实例不应该比制作任何其他类的实例慢得多。

如果你选择做自己的动态代理,你需要学习IL。反射器或类似工具是一种很好的方法。你可以编写你想要生成的代码,然后查看反射器中的IL

正如@BrokenGlass所说,有些图书馆可以做到这一点,但它有很好的学习经验:)