c# - 使用 python.net 获取 C# 枚举描述?
问题描述
我正在使用带有 C# API 的 python.NET。dll 加载正常,我可以找到我需要的枚举,但无法找出访问它的值、名称和描述的正确语法。
我对 C# 不太熟悉,但认为枚举类似于
public enum Things
{
X1,
X2,
X3,
X4
}
我正在尝试做相当于例如
var values = Enum.GetValues(typeof(Things));
虽然我也想访问名称和描述。有一个“GetNames”方法和一个“Overloads”方法,我认为这可能是这些方法所需要的。
我坚持在 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 有问题。
解决方案
尝试以下操作:
from System import Enum
Enum.GetName(Things, 21) # returns "X1"
推荐阅读
- http - 通过 HTTP Post 将图像上传到 Firebase 存储
- mongodb - mongo查询动态获取对象字段
- windows - 我在 Windows 终端 settings.json 中错过了什么?
- python - RISC-V Toolchain Makefile 的分隔符和代码错误问题。我怎样才能做到正确?
- c# - Process.Start 不起作用,或者什么也不做
- c# - Unity c#在后台设置计时器,即使游戏不活跃
- css - 背景图像未在烧瓶网站上注册
- python - 使用新网格插入 4D 数据的最佳方法
- reactjs - 如何在 reactjs 中使用 Grubhub 提供的 Grubhub 链接?
- java - JEditorPane 内容类型“text/html”换行符,不创建段落