我正在使用带有C#API的python.NET。 dll加载正常,我可以找到所需的枚举,但找不到正确的语法来访问其值,名称和描述。
我对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来获取此信息的正确方法以及目前尚无法找到的描述。
ETA:找出部分我做错的事情。可以获取值和名称,如下所示:
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__']
答案 0 :(得分:0)
尝试以下操作:
from System import Enum
Enum.GetName(Things, 21) # returns "X1"