如何动态地从子对象获取父对象

时间:2010-09-24 00:55:16

标签: c#

是否可以动态地从子对象获取父对象?本质上,我想要完成的是动态检索属于子对象父级的属性的值。例如,以下内容:

public T GetParentProperty<T>(object oChildObject, string sPropertyName)
{
    ??? oOwner;
    PropertyInfo oOwnerInfo;
    T oPropertyValue;

    try
    {
        oPropertyValue = null;
        if (oChildObject != null)
        {
            oOwner = oChildObject.GetType().???;
            oOwnerInfo = oOwner.GetType().GetProperty(sPropertyName);
            if (oOwnerInfo != null)
                oPropertyValue = oOwnerInfo.GetValue(oOwner, null) as T;
        }
    }
    catch(Exception oEx)
    {
        Console.WriteLine(oEx);
    }

    return oPropertyValue;
}

非常感谢提前!

1 个答案:

答案 0 :(得分:3)

假设你的孩子继承的类是“父”,你可以使用Type类的BaseType属性。如果BaseType属性没有完全返回您需要的内容,那么您可以查看该链接上的成员列表,并找到其中的成员。这是您的代码示例似乎正在尝试。

不幸的是,如果您在拥有对您的子类型的引用的类中表示“父”,我认为不能这样做。

我想知道为什么你需要这个功能,因为这是一个奇怪的需要。