我们在MSDN中读到 “GetMethods
方法不按特定顺序返回方法” ,但这是一般情况适用于所有类型。我只对接口类型感兴趣,需要按声明顺序枚举接口方法。
我意识到这样做的安全方法是使用某种序列值为每个方法添加自定义属性,然后按该序列对反射的MethodInfos进行排序。但是,我想知道这是否真的有必要。我怀疑的原因是[COMImport]
接口的存在,我们知道肯定必须按声明顺序保留成员的顺序(否则不能进行正确的vtable映射)
所以我的问题是,在执行typeof(interfacetype).GetMethods()
时,以下哪种方法更能确保声明顺序:
[ComImport]
与假[Guid]
添加到接口声明中,希望枚举方法时它实际上有所不同。在我的特定情况下,我只需要枚举的方法(接口中不存在其他成员),仅用于接口,接口永远不会有任何基接口。