c#创建一个可重用的方法来访问对象内部的属性

c#创建一个可重用的方法来访问对象内部的属性,c#,generics,reflection,C#,Generics,Reflection,抱歉,因为我知道标题听起来模棱两可,但我无法用更好的词来表达 所以,我会尽量保持它非常简单和简短。假设我有一个User对象,它的int属性为caledUserID,我访问它的方式如下: var value = instanceofUser.UserID; 有没有办法创建一个可重用的方法来访问给定对象的给定属性?这就是我想要实现的目标: void GetTheValue(object parent, property nameOfProperty) { var value = parent.

抱歉,因为我知道标题听起来模棱两可,但我无法用更好的词来表达

所以,我会尽量保持它非常简单和简短。假设我有一个
User
对象,它的
int
属性为caled
UserID
,我访问它的方式如下:

var value = instanceofUser.UserID;
有没有办法创建一个可重用的方法来访问给定对象的给定属性?这就是我想要实现的目标:

void GetTheValue(object parent, property nameOfProperty)
{
  var value = parent.nameOfProperty;
}
这背后的原因是我有一个类似的案例,我必须一遍又一遍地重写整个代码块(不是这个确切的代码块,而是相同的代码块)。那么,这里的方法是什么,使某些东西可重用,以便我可以访问任何给定对象的任何给定属性

我正在考虑使用
反射
或泛型,但是,现在,我根本不知道搜索或实现什么。任何建议都会有帮助

试试这个(为了简洁起见,省略了错误处理):


它应该以对象的形式给出值,然后您必须将其强制转换为所需的类型。

如果要访问编译时未知的属性,可以使用反射。@dymanoid,任何示例?尝试过搜索?但调用函数仍需要指定类和属性。如果您知道父项和属性,您可以只使用
parent.nameOfProperty
?重复的代码听起来像是类继承的问题。@Aousafrashid如果您真的需要,那么反射就是一种方法。但这将是某种最后手段(我们确实使用它根据您想要在报告中显示的属性的文本定义生成报告)。但在任何情况下,重复的代码都应该进入可重用的方法中。但我仍然不清楚重复的代码是什么。在评论中,亚当建议这不是正确的方法。你能解释一下原因吗?@Aousafrashid:我会让亚当决定的。我无法解释他的评论。但是,除非出于某种原因,否则不建议使用反射来设置属性。但我想回答你的实际问题。
object GetTheValue(object parent, string nameOfProperty)
{
    return parent.GetType().GetProperty(nameOfProperty).GetValue(parent);
}