代码之家  ›  专栏  ›  技术社区  ›  ozke

简单一个?使用C#中的变量访问对象的属性[复制]

  •  1
  • ozke  · 技术社区  · 17 年前


    Property Name and need its value

    string[] variable_names = new string[] {"name", "surname"};
    myObject.variable_names[0] = 1; 
    myObject.variable_names[1] = 1;
    

    在其他语言(非C#)中,我使用:

    myObject[variable_names[0]] = 1; 
    

    我知道这个例子看起来很愚蠢,但这只是一种解释方式。

    提前感谢:)

    2 回复  |  直到 9 年前
        1
  •  6
  •   John Saunders    17 年前

    您需要使用Reflection来完成此操作。假设您要访问的是myObject的一个属性:

    var type = myVariable.GetType();
    var property = type.GetProperty("name");
    property.SetValue(myVariable, 1, new object[] {});
    
        2
  •  2
  •   Stefan Steinegger    17 年前

    C#是强类型的,这意味着编译器会检查属性是否存在。因此,按名称动态访问属性并不容易。你需要对此进行反思。

    与其解释这是如何工作的(我相信其他人会这样做),我建议尽可能使用界面或其他方式来提供强打字。C#不是脚本语言,不应该作为脚本语言使用。