通过python.net获取C#枚举说明吗?

时间:2019-01-31 16:57:48

标签: c# python python.net

我正在使用带有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__']

1 个答案:

答案 0 :(得分:0)

尝试以下操作:

from System import Enum

Enum.GetName(Things, 21) # returns "X1"