.net动态代理的成本

| 使用动态代理的成本是多少? 我不想使用接口实现来使我的项目混乱,因此我正在考虑使用由某些第三方库(如LinFu,Castle,Unity等)创建的动态代理。它们是每个接口生成一个实例还是为每个调用生成一个实例。 它是一个Web应用程序,因此从长远来看会带来性能问题。 我也在使用EF 4.1(目前是CTP5),因此是否创建代理类本身,这使我想知道是否可以使用EF自己的动态代理创建工具。 附言是的,我的接口是由具体类以及其他接口和基类实现的,但是有时我只需要它的接口部分,而不需要具体类附带的额外内容。 所有接口仅声明EF4.1 POCO的一部分。所以就是吸气剂和二传手。     
已邀请:
开源的Impromptu接口,需要c#4.0,并为您使用的每个接口和实现类型组合创建一个轻量级的代理类型,并将其缓存。 因此,围绕给定的实现创建接口代理(无论您如何设置,ExpandoObject都将作为一种类型)会产生一次生成代理类型的成本,每次生成代理都会产生Activator.CreateInstance成本( \(还不错),并且每次调用都会有一个静态调用,这是您在没有代理的情况下可以得到的+ dlr动态调用,这要归功于Microsoft的优化。     
看起来您需要更多的存根而不是动态代理。也许您可能想看看起订量。据我所知,每次创建模拟程序时,它都会创建一个不同的实例,但是不知道内部是否保留某种类型的缓存。请注意,因为它是用于单元测试的库,所以这种使用可能是不合常规的。     

要回复问题请先登录注册