拦截动态属性访问器



这里有一个有趣的问题(至少对我来说):是否有可能拦截对象中的任意属性访问器(getter/setter),以便我可以将该请求重新路由到其他地方,例如私有成员对象?

如果我能让它看起来好像我的外部对象可以自动访问内部对象的某些内部属性(即除了少数例外的一切),调用者不知道,实际上使外部"shell"对象的行为像内部对象一样,而不必手动创建映射到内部对象的每个属性的属性。

可能有一个模式,但我的猜测是它涉及到手动连接外部属性到内部属性。

我的开源框架ImpromptuInterface(在nuget上)有很多工具供您做这些事情。它的主要特点是生成代理,代理使用dlr实现、接口和转发调用。

它也有很多函数,使dlr调用交互式访问。还有一些动态对象的例子,为创建有用的动态对象(如ImpromptuForwarder)提供了一个起点。

您可以尝试使用代理对象

http://www.codeproject.com/KB/cs/Emit_Proxy.aspx

相关内容

  • 没有找到相关文章