C# 如何输入字符串并从对象中获取相同的名称属性?

C# 如何输入字符串并从对象中获取相同的名称属性?,c#,reflection,C#,Reflection,可能重复: 比如说,classA具有属性A、B、C、D、E。。我想构建一个方法StringToProperty,以便StringToProperty(“a”)返回a 我想这可以通过思考来实现,但我现在对此一无所知。有简单的例子吗 THx,我将关闭它,请投票关闭如果你做一个非常简单的谷歌搜索,你可以找到很多关于这个的文章 我发现这正是你需要的 你可以很容易地写: public object StringToProperty(string propertyName) { Type type

可能重复:

比如说,
classA
具有属性A、B、C、D、E。。我想构建一个方法
StringToProperty
,以便
StringToProperty(“a”)
返回a

我想这可以通过思考来实现,但我现在对此一无所知。有简单的例子吗


THx,我将关闭它,请投票关闭

如果你做一个非常简单的谷歌搜索,你可以找到很多关于这个的文章

我发现这正是你需要的

你可以很容易地写:

public object StringToProperty(string propertyName)
{
   Type type = ClassA.GetType();
   PropertyInfo theProperty = type.GetProperty(propertyName);

   object propertyValue = theProperty.GetValue(yourClassAInstance, null);
   return propertyValue;
}

是否在具有属性的类中编写方法?如果是这样,只需执行以下操作:

public object StringToProperty(string prop)
{
    switch(prop)
    {
        case "A":
           return a;
        case "B":
           return b;

    }
}
或者,如果没有,您可以使用反射:

Type type = classA.GetType();
return type.GetProperty(propertyString).GetValue(classAInstance, null);

这不是StackOverflow的重点为什么不是这样?在第一个常见问题中,它明确指出“请环顾四周,看看你的问题以前是否被问过。”一种方法是直接在StackOverflow中进行搜索。另一个(范围更广,通常返回StackOverflow)是谷歌。我只是想指出,这是一个人们已经写了很多文章的非常普遍的问题,最好先做一些研究。StackOverflow也鼓励了这一点。所以你的讽刺有点不合时宜。@Seb他指的是我提到的最初部分,在那里你可以很快从谷歌(或StackOverflow)找到关于这个问题的答案。@colinfang请看这个问题,这个问题是作为非常简单的切换块解决方案的副本+1提供的。(即使OP正在寻找一个反射的例子,我认为这是一个更好的解决方案!)
Type type = classA.GetType();
return type.GetProperty(propertyString).GetValue(classAInstance, null);