通过MethodBase.GetCurrentMethod()获取属性类型的问题.ReflectedType;

时间:2011-01-27 09:14:53

标签: .net reflection types properties

我在我的一些属性中调用泛型方法(以填充由NHibernate创建的代理类,尽管现在这并不重要)

为了做到这一点,我希望他输入属性并将其传递给一个方法,这个方法实现了它的魔力,然而其中一些属性是“嵌套的”意味着例如Address属性将具有此但Address的Country属性也有这个功能。

我似乎得到的问题是,由于Address getter正在触发Country Getter,当我调用MethodBase.GetCurrentMethod()时.ReflectedType;在我的Country属性中,它返回Address作为它的类型,尽管实际国家中有关属性的类型。

以下是一些代码段:

public virtual Country Country
        {
            get
            {
                _country = Backoffice.Library.Serialization.Reflection.GetPossiblyProxyProperty(MethodBase.GetCurrentMethod().ReflectedType, _country);

                return _country;
            }
            set { _country = value; }
        }

我对于为什么这会返回错误的Type非常无能为力,我真的希望这可能是通用的,我可以只做一个typeof(Country)但是我必须设置为我所有的财产很糟糕:(

1 个答案:

答案 0 :(得分:2)

如果您要查找该媒体资源的返回类型,则应使用MethodInfo.ReturnType而不是ReflectedType ...