这是一个有趣的问题(至少对我来说):是否可以拦截对象中的任意属性访问器(getter/setter),以便我可以将该请求重新路由到其他地方,例如私有成员对象?
如果我可以让它看起来好像我的外部对象自动可以访问调用者不知道的内部对象的某些内部属性(即除了少数例外的所有内容),我会喜欢它,实际上使外部对象“shell”对象的行为类似于内部对象,无需手动创建映射到每个内部对象属性的属性。
可能有一种模式,但我的猜测是它涉及手动将外部属性连接到内部属性。
我的开源框架ImpromptuInterface(在 nuget 上)有很多工具可以让你做这些事情。它的主要功能是生成代理,使用 dlr 实现、接口和转发调用。
它还有很多功能可以使 dlr 调用以交互方式访问。还有一些DynamicObjects示例,它们为制作有用的动态对象(如ImpromptuForwarder )提供了起点。
您可以尝试使用代理对象