如何在 C# 中从基数 class 按名称派生 class 成员?

How to get derived class MEMBERS by name, from base class, in C#?

我有基础 class CommonClass - 抽象父类。从它我有许多派生的 classes,它们都只有相同类型的新的不同成员 ObjDescr。一个简短的例子

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 很好地为我服务,但现在我想做一个通用方法,我可以向它发送 any 不同的派生子 class.它将迭代一些新的派生成员,知道 成员名称

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 实例 UnknownDerived 的成员。

编辑: 我不同意这个问题与其他问题重复。解决方案是一样的,我同意。但问题是不同的。在我问之前,我用谷歌搜索并搜索,但没有找到答案。如果其他人希望从名称中获取 class 个实例成员以找到此答案,这将很方便。

使用 Reflection,您可以访问 属性:

public void SuperDuperUniversal(CommonClass unknownDerived, string memb_name)
{
    var member = unknownDerived.GetType().GetProperty(memb_name).GetValue(unknownDerived, null) as ObjDescr;

    string desc = member.Description;
}