You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python for .NET:如何通过反射调用静态类的方法?

如何在Python中调用C#静态类的方法?

你之前调用普通类方法的思路没问题,但静态类本身不能被实例化,所以实例化那一套流程不仅没必要,还会导致问题。要调用静态类的方法,直接通过类的Type对象调用静态方法即可,不需要创建实例。

正确的调用步骤:

  • 先加载目标程序集,和之前一样用clr.AddReference
  • 获取静态类的Type对象
  • 调用Invoke方法时,第一个参数传入None(对应C#的null),因为静态方法不需要实例对象

完整代码示例:

import clr
# 加载目标程序集
clr.AddReference('c:\\Test\\Module.dll')
from System import Type

# 获取静态类的Type对象
static_class_type = Type.GetType('SomeNamespace.SomeClass')
# 获取目标静态方法的MethodInfo对象
static_method = static_class_type.GetMethod('SomeMethod')
# 调用静态方法:第一个参数传None(无需实例),第二个参数是方法所需的参数列表
result = static_method.Invoke(None, [])
print(result)

为什么之前的方法行不通?

  • C#的静态类是密封的且不包含实例构造函数,所以你调用type1.GetConstructor(Type.EmptyTypes)会返回null,后续的实例化步骤自然会报错。
  • 静态方法属于类本身,不属于任何实例,所以直接通过类的Type对象调用即可。

如果你的静态方法需要传入参数,只需要在Invoke的第二个参数列表里填入对应的值就行,比如static_method.Invoke(None, [3.14, "demo"])。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:17:01