typeof(<interfacetype>)返回的方法顺序.c#

时间:2016-01-02 07:59:40

标签: c# .net reflection

我们在MSDN中读到 GetMethods方法不按特定顺序返回方法” ,但这是一般情况适用于所有类型。我只对接口类型感兴趣,需要按声明顺序枚举接口方法。 我意识到这样做的安全方法是使用某种序列值为每个方法添加自定义属性,然后按该序列对反射的MethodInfos进行排序。但是,我想知道这是否真的有必要。我怀疑的原因是[COMImport]接口的存在,我们知道肯定必须按声明顺序保留成员的顺序(否则不能进行正确的vtable映射)

所以我的问题是,在执行typeof(interfacetype).GetMethods()时,以下哪种方法更能确保声明顺序:

  1. 使用序列号添加自定义属性,然后按该序列值
  2. 对返回的方法进行排序
  3. [ComImport]与假[Guid]添加到接口声明中,希望枚举方法时它实际上有所不同。
  4. 忽略MSDN并假设声明顺序始终保留用于接口方法(这似乎是实际情况,从查看引用源,除非我遗漏了某些内容)
  5. 在我的特定情况下,我只需要枚举的方法(接口中不存在其他成员),仅用于接口,接口永远不会有任何基接口。

0 个答案:

没有答案