1

这几乎是一个重复的问题,但我没有使用 Castle Dynamic Proxy,而是使用 LinFu获取代理对象的底层类型

我正在使用 automapper 创建要发送到 Asp.net MVC 中的视图模型的接口代理。我的问题是我可以告诉 MVC 的默认 MetadataProvider 通过调用模型上的 .GetType() 来查找属性和元数据。

因此,EditorFor() 和 DisplayFor() 模板不会生成任何字段。我需要做的是找到代理目标类型,然后生成我的模板。我知道我可以解析名称并使用 GetType("thename") 但想知道是否有简单的方法。

4

2 回答 2

1

LinFu.DynamicProxy 不直接暴露代理的底层对象。它只是将每个方法调用重定向到一个 IInterceptor 实现实例。为了访问底层对象,您必须确定当前拦截器实例是否实际上具有目标类实例。

如果您正在使用 AutoMapper、AFAIK,他们使用 LinFu.DynamicObject 来做很多鸭子录音,并且在 LinFu.DynamicObject 生成的动态类型上调用 GetType() 甚至不会让您获得域中的实际类型模型——它只会给你一个被 LinFu 自己用鸭子胶带粘在一起的对象。

于 2010-02-28T21:45:46.787 回答
-2

获取最新的 AutoMapper - 它使用 Castle Dynamic Proxy,并且您已经知道如何从那里获取它 :)

于 2010-02-22T11:39:47.377 回答