无法从System .__ COMObject获取可用数据

时间:2016-11-29 21:54:49

标签: c# com marshalling

我正在使用我在控制台应用程序中引用的第三方SDK(专有),我的任务是帮助构建一个可以促进许多日常任务的解决方案。但是,当我构建解决方案的一部分时,我观察到某些项目返回的对象看起来像是错误。这仅适用于某些项目,但是其他项目返回有意义的数据,因此我假设它与null相关或不存在。不过,我想请社群提供一些见解。

实施例

当我查看客户的活页夹GUID(好案例)

string getGuid = currentWorkingPaper.ClientGUID; << I get meaningfull data that I can use

另一方面,当我查看相同客户活页夹(坏案例)的帐户时

 var value1 = currentWorkingPaper.RootEntity.Accounts; << returns {System.__ComObject}

当我深入研究{System .__ ComObject}时,我得到以下内容

enter image description here

我尝试获取数据

我试图钻进这个com对象,看看我是否可以通过以下操作获得一些信息,但我没有得到任何可用的数据。

首次尝试:

var whatIsThis1 = value1.GetType().GetMembers();

**Returns**

 -      whatIsThis1 {System.Reflection.MemberInfo[7]}   System.Reflection.MemberInfo[]
+       [0] {System.String ToString()}  System.Reflection.MemberInfo {System.Reflection.RuntimeMethodInfo}
+       [1] {System.Object GetLifetimeService()}    System.Reflection.MemberInfo {System.Reflection.RuntimeMethodInfo}
+       [2] {System.Object InitializeLifetimeService()} System.Reflection.MemberInfo {System.Reflection.RuntimeMethodInfo}
+       [3] {System.Runtime.Remoting.ObjRef CreateObjRef(System.Type)}  System.Reflection.MemberInfo {System.Reflection.RuntimeMethodInfo}
+       [4] {Boolean Equals(System.Object)} System.Reflection.MemberInfo {System.Reflection.RuntimeMethodInfo}
+       [5] {Int32 GetHashCode()}   System.Reflection.MemberInfo {System.Reflection.RuntimeMethodInfo}
+       [6] {System.Type GetType()} System.Reflection.MemberInfo {System.Reflection.RuntimeMethodInfo}

第二次尝试

var whatIsThis2 = value1.GetType().AssemblyQualifiedName;
**returns**
whatIsThis2 "System.__ComObject, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"   string

第三次尝试

var whatIsThis3 = value1.GetType().GetFields();
**Returns**
whatIsThis3 {System.Reflection.FieldInfo[0]}    System.Reflection.FieldInfo[]

附录

在我第三次尝试之后,我看到它没有返回任何字段,所以我认为可能是,当我得到一个System .__ COMObject时,这是因为我试图获取null或不存在的数据。因为,我只使用我想要的某些项目来获取这些对象。但是我很想知道这些com对象内部到底是什么。

0 个答案:

没有答案