【问题标题】:Using a variable to access a list field使用变量访问列表字段
【发布时间】:2016-06-03 18:21:01
【问题描述】:

是否可以使用变量来使用 c# 访问 List 字段,如下所示?

string myField = "ImmediateAddress";
byte returnByte = mnemonicList[0].myField;

【问题讨论】:

  • 你想达到什么目的?
  • mnemonicList是什么类型?
  • “可以,但效率不高”(除非该类型公开了键控 API)
  • mnemonicList 是类助记符的列表。我要做的是将我的代码从六个方法调用重构为一个方法。除了在列表中查找之外,每个方法都执行相同的结果。即我的 sn-p 中的 returnByte。

标签: c# variables reflection field


【解决方案1】:

使用反射,您可以在运行时访问字段,并且不要忘记添加验证

mnemonicList[0].GetType().GetProperty(myField).GetValue(mnemonicList[0], null);

【讨论】:

  • 嗯,我以为我有这个但是当它试图在我的列表中返回一个 int 字段时它不起作用。似乎 GetProperty(myField) 想要一个字符串。我试过铸造 myField 无济于事。有什么想法吗?
【解决方案2】:

我不确定这是否有很大帮助 - 但您可以使用 dictionary 而不是 List。如果我提出了错误的解决方案,请告诉我,但这样您就可以访问带有字符串之类的对象的条目,例如dictObject["keyToValue"]。它确实需要您使用Dictionary 而不是List,但如果您想使用字符串查找内容,这是最简单的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多