我注意到DynamicProxy对象可以实现IChangeProxyTarget接口,允许您执行((IChangeProxyTarget)myProxyObj).ChangeInvocationTarget(newTarget)
之类的操作。
有没有办法在DynamicProxy对象上类似地更改mixin实现?显然,这比我没有完全考虑过的方式更改目标更加复杂和微妙(由于不同的界面实现,混合的多样性等),但这个概念并非完全不可想象。
或者缺乏这个,以合理的方式实现这一点的任何想法?我有一些关于黑客攻击的理论观点,但它看起来非常非常复杂:
Action<object, object> DoSwitch
属性var dpObj = proxyGenerator.Create...
- 确保将IMixinSwitcher添加到接口中以实现dpObj.Gettype()
mixinSwitcher.DoSwitch = (SRE setter method here)
第1步类可以通用化,以允许它针对特定/多个实现;步骤4-5缓存以获得额外性能,并且可以清除一般步骤1的实现。
即便如此,我也不否认它很疯狂 - 有更好的方法吗?
答案 0 :(得分:0)
不,这不受支持,主要是因为没有人想出一个有用的好方案。你的情景是什么?为什么你想能够交换mixin目标?