如何引用Employee类型的对象的属性,例如动态地引用?我喜欢employee."hasBeenPaid"
之后?它是否涉及反思?如何使用字符串来定位对象的属性?
class Employee
{
String name;
Bool hasBeenPaid;
}
如何引用Employee类型的对象的属性,例如动态地引用?我喜欢employee."hasBeenPaid"
之后?它是否涉及反思?如何使用字符串来定位对象的属性?
class Employee
{
String name;
Bool hasBeenPaid;
}
你可以尝试:
Type type = your_class.GetType();
PropertyInfo propinfo = type.GetProperty("hasBeenPaid");
如果您需要的值
value = propinfo.GetValue(your_class, null);
然后propInfo.GetValue(your_object,null)。另外Type.GetProperty有几个参数(至少是BindingFlags),它允许你获取公有的或者不公开的属性,静态的或者非静态的(实例)等。 – 2012-07-05 10:20:08
谢谢@AlexeyF,你绝对正确! – Marco 2012-07-05 10:26:31
您可以使用dynamic C# feature;是的,它会在运行时使用反射来解析你的属性。
从技术上讲,这不起作用,DLR将抛出一个有关属性可访问性的运行时错误(这是默认的私有属性),并且不能以“字符串”的形式访问它,而是以编码的鸭型属性名称的形式访问它。 – 2012-07-05 10:20:29
@Adam:OP没有指定她需要使用字符串检索属性,我认为C#动态功能可以涵盖她正在寻找的内容。 – 2012-07-05 10:33:44
问题标题特别说“带字符串”,示例用法显示一个字符串。使用基本形式的'dynamic'不足以满足这些要求,使用字符串也意味着提供一个变量而不是一个literla的能力。 '动态'没有任何改变使用鸭子键入,如果你想使用字符串,你需要做这样的事情:http://stackoverflow.com/questions/2783502/c-sharp-using-the-dynamic-keyword-to -access-properties-via-strings-without-refle它不适用于他提供的实体并假定公共成员访问。 – 2012-07-05 10:36:01
什么是你要完成的更广泛的目标? – reuben 2012-07-05 10:18:33
@CodeCaster这是一个重复,如果你认为答案将反映,但还有其他方式来做到这一点,链接的答案不包括。 – 2012-07-05 10:40:59