我有以下场景
装配A
public abstract class MyBaseEntity
{
//Uncompleted method
public void addChild<T>(T child)
{
try
{
Type tInfo = this.GetType();
PropertyInfo pInfo = tInfo.GetProperties(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance).Where(p => p.PropertyType == typeof(ISet<T>)).FirstOrDefault();
MethodInfo mInfo = tInfo.GetMethod("Add");
mInfo.Invoke(this, new object[] {child});
}
catch (Exception ex)
{
throw ex;
}
}
}
装配B
public class MyModel : MyBaseEntity
{
public virtual int p1 { get; set; }
public virtual int p2 { get; set; }
public virtual DateTime p3 { get; set; }
public virtual bool p4 { get; set; }
private readonly ISet<MyModelChild> _p5;
private readonly ISet<MyModelChild2> _p6;
public virtual string p7 { get; set; }
public MyModel()
{
this._p5 = new HashSet<MyModelChild>();
this._p6 = new HashSet<MyModelChild2>();
}
public virtual IEnumerable<MyModelChild> P5
{
get { return _p5; }
}
public virtual IEnumerable<MyModelChild2> P6
{
get { return _p6; }
}
}
在 MyBaseEntity 类中,我尝试获取私有 ISet 子级并调用方法“Add”。
我将“addChild”方法称为
myObject.addChild<MyModelChild>(child);
but the GetProperties
方法不提取私有财产。它可以提取所有公共属性,但不能提取私有属性。
有人可以帮助我吗?
谢谢你!
您引用的两个私有是字段,而不是属性,自然您不会找到它们GetProperties http://msdn.microsoft.com/en-us/library/6kec8wwk.aspx(您可以使用GetFields http://msdn.microsoft.com/en-us/library/sa5z9w50.aspx为了那个原因)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)