如何使用 pythonnet 获取可用模块

How to get available modules with pythonnet

我正在尝试将 .net dll 导入 python 并想弄清楚如何查看可用的模块。

import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Form

在 clr.AddReference 行之后如何查看可导入的内容?我想知道 System.Windows.Forms 可用并且表格可用。

我有一个正在尝试使用的内部 .net dll,但在没有示例的情况下无法弄清楚如何查看我需要调用的模块。一旦我明白了这一点,我就可以看到像

这样的东西有什么用
form = Form()
print(dir(form))

我能够通过以下代码获得我需要的信息:

dll_ref = System.Reflection.Assembly.LoadFile(full_path)
print(dll_ref.FullName)
print(dll_ref.Location)
for i in range(len(dll_ref.DefinedTypes)):
    print(dll_ref.DefinedTypes[i])

有一些工具可以向您显示 .NET DLL 中的成员。一个是 Visual Studio 中的 Object Explorer。还有一个来自 JetBrains 的免费工具 dotPeek。

如果您想从 Python 执行此操作,您需要 dir 在您必须事先知道的命名空间上,或者使用 .NET 反射以编程方式检查 DLL。