C# 是否可以从.NET interop中的接口指针确定基础COM组件类型?
我正在使用.NET中的COM库。供应商提供了带有文档的主互操作程序集。然而,一个特定的方法返回一个接口指针,但是文档并没有告诉我底层组件的类型是什么(所以我不知道我还可以访问哪些其他接口)C# 是否可以从.NET interop中的接口指针确定基础COM组件类型?,c#,.net,com,com-interop,C#,.net,Com,Com Interop,我正在使用.NET中的COM库。供应商提供了带有文档的主互操作程序集。然而,一个特定的方法返回一个接口指针,但是文档并没有告诉我底层组件的类型是什么(所以我不知道我还可以访问哪些其他接口) 如果我只有一个接口指针,是否可以确定此方法返回的底层组件是什么?一般来说,简单的答案是否。COM总是隐藏底层对象,它不像C#那样具有refection 如果您拥有创建它的代码,当然可以跟踪,或者对象可能会告诉您。此外,您还可以尝试一些技巧,比如检查进程中加载的DLL,查询所有接口,但这一切都取决于您的具体问题
如果我只有一个接口指针,是否可以确定此方法返回的底层组件是什么?一般来说,简单的答案是否。COM总是隐藏底层对象,它不像C#那样具有refection
如果您拥有创建它的代码,当然可以跟踪,或者对象可能会告诉您。此外,您还可以尝试一些技巧,比如检查进程中加载的DLL,查询所有接口,但这一切都取决于您的具体问题 一般来说,简单的答案是否定的。COM总是隐藏底层对象,它不像C#那样有反射
如果您拥有创建它的代码,当然可以跟踪,或者对象可能会告诉您。此外,您还可以尝试一些技巧,比如检查进程中加载的DLL,查询所有接口,但这一切都取决于您的具体问题 不,除了尝试之外,没有其他方法可以找到答案。实际尝试的一个有用的开始是文档。这是COM的一个核心设计特性,实现被小心地隐藏在接口后面
在.NET中没有什么不同,除了反射解决方案,你不应该使用它。不,除了尝试之外,没有其他方法可以找到答案。实际尝试的一个有用的开始是文档。这是COM的一个核心设计特性,实现被小心地隐藏在接口后面
在.NET中没有真正的不同,除了反射解决方案,您不应该使用它。这篇MSDN杂志文章(包括VB源代码)可能很有用:。这篇MSDN杂志文章(包括VB源代码)可能很有用:。如果你能猜出它可能是什么,你可以问它是否能做到这一点,看看它会回答什么。请参阅接口的QueryInterface方法。事实上,它不会强制转换自身,它可能会从它的内部对象返回一些实现,或者从它根据需要生成的其他辅助对象返回一些实现,等等
还可以查看它是否实现ITypeInfo或IDispatch,并利用它们。请参阅Groverby已经提到的链接:如果您能猜出它可能是什么,您可以询问它是否可以将自己转换为该链接,并查看它的回复。请参阅接口的QueryInterface方法。事实上,它不会强制转换自身,它可能会从它的内部对象返回一些实现,或者从它根据需要生成的其他辅助对象返回一些实现,等等 还可以查看它是否实现ITypeInfo或IDispatch,并利用它们。请参阅已经提到的Groverby链接: