gpt4 book ai didi

c# - 通过反射在 C# 中转换 System.__ComObject

转载 作者:太空狗 更新时间:2023-10-29 23:35:28 25 4
gpt4 key购买 nike

我正在尝试使用反射将 System.__ComObject 转换为接口(interface)类型。我试过使用 Convert.ChangeType(Object,Type) 但是 c# 然后抛出这个错误:

System.InvalidCastException: Object must implement IConvertible.

那么有什么可能的方法可以使用反射将通用的 __ComObject 转换为其正确的类型,以便我可以通过反射调用它的方法?是的,它必须通过一种不涉及提前告诉编译器对象类型是什么的方法来完成!

最佳答案

一般不会。

_ComObject 需要实现 .Net 运行时知道的接口(interface)。这将是您从 QueryInterfaceIDispatch 获得的接口(interface)。

如果是前者,您必须知道接口(interface)是什么,然后您必须使用ComImportAttribute 向.Net 描述接口(interface)。在界面上。

如果 COM 对象实现了 IDispatch,您可以动态调用它的成员。在 .Net 4.0 及更高版本中,这可以通过使用 dynamic 关键字轻松完成。如果您使用的是早期版本的 .Net,您可以调用 InvokeMember()GetType() 返回的类型上或转换为 IReflect并使用该接口(interface)调用方法。

最好的情况是,如果您通过在 COM 库上自己运行 tlbimp.exe 或为它,通常来自 COM 库作者。

关于c# - 通过反射在 C# 中转换 System.__ComObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2151861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com