无法使用反射获取SAP di api对象的所有方法

本文关键字:对象 api 有方法 di SAP 反射 获取 | 更新日期: 2023-09-27 17:50:11

我试图使用以下代码显示SAPbobsCOM.Items的所有方法:

 SAPbobsCOM.Items item = (SAPbobsCOM.Items)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oItems);
        Type t = item.GetType();
        MethodInfo[] mi = t.GetMethods();
        Console.WriteLine("Number of methods={0}", mi.Length);
        foreach (MethodInfo m in mi)
            Console.WriteLine(m);

输出只给出了7种方法,不包括Add(), Update()方法等其他几种可用方法,尽管在编写代码时通过智能感知显示。为什么会这样呢?

无法使用反射获取SAP di api对象的所有方法

我不熟悉SAP接口,但这里有几个可能的原因:

  1. Type.GetMethods()只返回公共方法。看起来你正在评估一个COM对象,所以其他类型的方法是不可能的。
  2. 对于COM对象,方法可以从元数据中省略,也可以包含在不同的COM接口中。
  3. 其他方法可以是其他类添加的扩展方法。同样,如果这是一个COM对象,则不太可能。

不能简单地用这种方式反射COM对象。你可以这样做:

1)使用TLI.DLL(类型库信息)或2)反映interop.SAPbobsCOM.dll,这是一个。net dll。