How to get derived class MEMBERS by name, from base class, in C#?
本问题已经有最佳答案,请猛点这里访问。
我有基类commonclass-abstract父类。从中我有许多派生类,它们都只有相同类型objdescr的新成员。一个简短的例子
1 2 3 4 5 6 7 8 9 10 11 | public class CommonClass { // many common methods, handlers and properties } // many derived classes like this one public class Orders : CommonClass { public ObjDescr Date { get; private set } public ObjDescr Place { get; private set } } |
CommonClass很好地为我服务,但是现在我想做一个通用的方法,我可以向它发送任何不同的派生子类。它将迭代一些新的派生成员,知道成员名。
1 2 3 4 5 6 7 8 9 10 | public SuperDuperUniversal( CommonClass UnknownDerived, string memb_name ) { // I do access to members now only WHEN i know the class Orders Order1 = (Orders)UnknownDerived; ObjDescr aPlace1 = Orders.Place; // I wanna to have access like ObjDescr aPlace2 = UnknownDerived.Get_ObjDescr_ByName(memb_name); string aPlaceName = aPlace2.Description; } |
号
我需要直接访问名为memb_name instance unknownderived的成员。
编辑:我不同意这个问题与其他问题重复。我同意,解决办法是一样的。但问题是不同的。在我问之前,我在谷歌上搜索了一下,却没有找到答案。如果有人想从名称中获取实例的类成员来找到这个答案,这将非常方便。
使用反射,您可以访问该属性:
1 2 3 4 5 6 | public void SuperDuperUniversal(CommonClass unknownDerived, string memb_name) { var member = unknownDerived.GetType().GetProperty(memb_name).GetValue(unknownDerived, null) as ObjDescr; string desc = member.Description; } |