【问题标题】:Intercepting dynamic property accessors .NET 4拦截动态属性访问器 .NET 4
【发布时间】:2011-08-08 02:55:53
【问题描述】:

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

如果我可以让它看起来好像我的外部对象可以自动访问调用者不知道的内部对象的某些内部属性(即除少数例外之外的所有内容),我会喜欢它,实际上使外部“外壳”对象的行为类似于内部对象,而无需手动创建映射到每个内部对象属性的属性。

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

【问题讨论】:

    标签: c# dynamic .net-4.0 expando


    【解决方案1】:

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

    它还有很多 functions 使得 dlr 调用可以交互访问。还有一些DynamicObjects 的示例,它们为制作有用的动态对象(如ImpromptuForwarder)提供了起点。

    【讨论】:

    • 酷,我得看看那个!谢谢。
    【解决方案2】:

    您可以尝试使用代理对象

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

    【讨论】:

    • 很有趣,但似乎确实涉及到类似程度的手工操作。
    猜你喜欢
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多