我使用的是python.NET和C# API。dlls加载ok,我可以找到我需要的枚举,但无法找到访问它的值、名称和描述的正确语法。
我对C#不太熟悉,但我认为它有点像
public enum Things
{
X1,
X2,
X3,
X4
}我试着做相当于。
var values = Enum.GetValues(typeof(Things));虽然我也想访问名称和描述。有一个'GetNames‘方法,和一个’重载‘方法,我认为这可能是所需的。
我坚持在python.Net中使用未绑定方法所需的语法。
In[1]: Things.GetNames
Out[1]: <unbound method 'GetNames'>我可以得到个人的价值
In[2]: Things.X1
Out[2]: 21但我真的很想了解使用Python.NET获取这些信息的正确方法--以及我目前找不到的描述。
ETA1:弄清楚我做错了什么。可以获得以下值和名称:
from System import Enum
values = Enum.GetValues(Things)
names = Enum.GetNames(Things)上面返回的是System.String[],但我可以在列表组合中对它们进行迭代,以获得名称和值的列表。
但还是不知道怎么得到描述。这方面没有任何明显的方法。
In [17]:dir(Enum)
Out[17]:
['CompareTo',
'Equals',
'Finalize',
'Format',
'GetHashCode',
'GetName',
'GetNames',
'GetType',
'GetTypeCode',
'GetUnderlyingType',
'GetValues',
'HasFlag',
'IsDefined',
'MemberwiseClone',
'Overloads',
'Parse',
'ReferenceEquals',
'ToObject',
'ToString',
'TryParse',
'__call__',
'__class__',
'__delattr__',
'__delitem__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__lt__',
'__module__',
'__ne__',
'__new__',
'__overloads__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__setitem__',
'__sizeof__',
'__str__',
'__subclasshook__']ETA2:我使用的方法很好,但是这个API被证明是错误的。
发布于 2019-11-11 16:58:23
尝试以下几点:
from System import Enum
Enum.GetName(Things, 21) # returns "X1"https://stackoverflow.com/questions/54465612
复制相似问题