【发布时间】:2019-08-09 12:24:58
【问题描述】:
抱歉,我知道标题听起来模棱两可,但我无法形容它更好
所以,我会尽量保持简单和简短。假设我有一个带有 int 属性的 User 对象,名为 UserID,我按如下方式访问它:
var value = instanceofUser.UserID;
有没有办法我可以创建一个可重用的方法来访问 given 对象的 given 属性?这就是我想要实现的目标:
void GetTheValue(object parent, property nameOfProperty)
{
var value = parent.nameOfProperty;
}
这背后的原因是我有一个类似的情况,我必须一遍又一遍地重写整个代码块(不是这个确切的代码块,但几乎相同)。那么,这里有什么方法可以使某些东西可重用,以便我可以访问任何 given 对象的任何 given 属性?
我正在考虑使用Reflection 或泛型但是,现在,我对搜索或实现什么一无所知。任何建议都会有所帮助!
【问题讨论】:
-
如果您想访问编译时未知的属性,则可以使用反射。
-
@dymanoid,有什么例子吗?
-
试过搜索?
-
但是调用你的函数需要你指定类和属性。如果您知道父母和财产,您可以使用
parent.nameOfProperty?对我来说,重复的代码听起来像是类继承问题。 -
@Aousafrashid 如果你真的需要,那么反射就是要走的路。但这将是某种最后的手段(我们确实使用它来生成基于您想要在该报告中的属性的文本定义的报告)。但无论如何,重复的代码应该进入可重用的方法。但我仍然不清楚重复的代码是什么。
标签: c# generics reflection