我试图使用以下代码显示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接口,但这里有几个可能的原因:
-
Type.GetMethods()
只返回公共方法。看起来你正在评估一个COM对象,所以其他类型的方法是不可能的。 - 对于COM对象,方法可以从元数据中省略,也可以包含在不同的COM接口中。
- 其他方法可以是其他类添加的扩展方法。同样,如果这是一个COM对象,则不太可能。
不能简单地用这种方式反射COM对象。你可以这样做:
1)使用TLI.DLL(类型库信息)或2)反映interop.SAPbobsCOM.dll,这是一个。net dll。
李