这几乎是一个重复的问题,但我没有使用Castle Dynamic Proxy而是使用LinFu Getting underlying type of a proxy object
我正在使用automapper来创建我发送到Asp.net MVC中的viewmodel的接口代理。我的问题来自于我所知道的MVC的默认MetadataProvider通过在模型上调用.GetType()来查找属性和元数据。
所以会发生什么是EditorFor()和DisplayFor()模板不生成任何字段。我需要做的是找到代理目标类型,然后生成我的模板。我知道我可以解析名称并使用GetType(“thename”)但是想知道是否有一种简单的方法。
答案 0 :(得分:1)
LinFu.DynamicProxy不直接公开代理的基础对象。它只是将每个方法调用重定向到IInterceptor实现实例。为了访问底层对象,您必须弄清楚当前拦截器实例是否实际上具有目标类实例。
如果你正在使用AutoMapper,AFAIK,他们使用LinFu.DynamicObject做很多鸭子编带,并且在LinFu.DynamicObject生成的动态类型上调用GetType()甚至不会得到实际的类型在你的领域模型中 - 它只会让你得到一个由LinFu本身实际上用鸭子贴在一起的对象。
答案 1 :(得分:-2)
获取最新的AutoMapper - 它使用城堡动态代理,你已经知道如何从那里得到它:)