Python for .NET:如何使用反射调用静态 class 的方法?
Python for .NET: How to call a method of a static class using Reflection?
我想使用静态方法class。
这是我的 C# 代码:
namespace SomeNamepace
{
public struct SomeStruct
{
....
}
public static class SomeClass
{
public static double SomeMethod
{
....
}
}
如果是 "normal" class 我可以使用 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()
但是当尝试使用静态 class 执行此操作时,我得到
MissingMethodException: "Cannot create an abstract class.
我该如何解决这个问题?
感谢对问题的评论,我能够使用 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])
我想使用静态方法class。
这是我的 C# 代码:
namespace SomeNamepace
{
public struct SomeStruct
{
....
}
public static class SomeClass
{
public static double SomeMethod
{
....
}
}
如果是 "normal" class 我可以使用 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()
但是当尝试使用静态 class 执行此操作时,我得到
MissingMethodException: "Cannot create an abstract class.
我该如何解决这个问题?
感谢对问题的评论,我能够使用 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])