python for .net:如何使用反射调用静态类的方法



我想使用静态类的方法。

这是我的C#代码:

namespace SomeNamepace
{
    public struct SomeStruct
    {
        ....
    }
    public static class SomeClass
    {
        public static double SomeMethod
        {
            ....
        }
    }

如果是"普通"类,我可以使用 SomeMethod,例如

lib = clr.AddReference('c:\TestModule.dll')
from System import Type
type1 = lib.GetType('SomeNamespace.SomeClass')
constructor1 = type1.GetConstructor(Type.EmptyTypes)  
my_instance = constructor1.Invoke([])  
my_instance.SomeMethod() 

但是,当尝试使用静态类做到这一点时,我会得到

MissingMethodException: "Cannot create an abstract class.

我该如何解决?

多亏了我能够使用 MethodBase.Invoke (Object, Object[])

找到解决方案的评论
lib = clr.AddReference('c:\TestModule.dll')
from System import Type
my_type = lib.GetType('SomeNamespace.SomeClass')
method = my_type.GetMethod('SomeMethod')  
# RetType is void in my case, so None works
RetType = None
# parameters passed to the functions need to be a list
method.Invoke(RetType, [param1, param2])  

最新更新