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);