Python для.NET: как вызвать метод статического класса с помощью Reflection?

Я хочу использовать метод статического класса.

Это мой код C#:

namespace SomeNamepace
{
    public struct SomeStruct
    {
        ....
    }

    public static class SomeClass
    {
        public static double SomeMethod
        {
            ....
        }

    }

Если бы это был "нормальный" класс, я мог бы использовать SomeMethod лайк

lib = clr.AddReference('c:\\Test\Module.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.

Как я мог решить это?

1 ответ

Решение

Благодаря комментариям к вопросу я смог найти решение, используя MethodBase.Invoke (Object, Object[])

lib = clr.AddReference('c:\\Test\Module.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])  
Другие вопросы по тегам