是否有与InterfaceMapping等效的属性和&活动?

时间:2010-11-19 20:10:43

标签: c# reflection dynamic

我正在构建一个Mixin发生器。我想知道何时必须避免构建属性以进行修改,以便公共API完全匹配。这对于Dynamic的使用很重要,否则因为有多个具有相同名称的属性,(如果我只是逐个添加属性),运行时类型绑定器只选择第一个,这可能是不是我想要的那个人。

对于方法,我可以使用InterfaceMapping和字典,这样我就不会为同一个方法编写多个方法转发器。 (我只是说这个方法被同样的方法覆盖)。

因此,如果我混合使用Dictionary<String,String>同时实现IDictionary<string,string>和常规IDictionary,我只希望公众面临String Item[String]属性,而不是{{1属性。

对于EventHandlers来说,虽然我不认为这是一个很大的问题。

现在我的API只有在底层属性或事件有新方法的情况下才创建属性,但是当我仍然看到混合在对象中的字典时,它仍然有重复的成员。

这是相关的代码片段,整个类相当大(甚至这些方法都比我喜欢的大一点:()驱动程序添加了接口映射中找到的所有非特殊名称方法,然后通过每个地图上的属性和事件并调用Object Item[Object]。我想我必须过滤那些在mixin上明确实现但是如何实现的内容?

CreateMixinForwardingProperty/Event

我知道我不必实现仅显式实现的属性或事件,因为当转换为接口类型时它们将正常工作,而动态仅查看公开可用的成员。

编辑:由于我删除了注释以使粘贴更容易,因此将混合的成员中的字段添加到基类型的覆盖中,并且对于它实现的每个方法,只需加载mixin字段,并在mixin属性上调用该方法。我称这个进程消息转发,因此名称。

0 个答案:

没有答案