class A
{
public string PropA {set; get;}
public A()
{
var props = this.GetType().GetProperties(BindingFlags.Public);
}
}
class B : A
{
public string PropB {set; get;}
}
var b = new B();
调用A
构造函数时,变量props
仅包含PropA
。可以获取所有属性(PropA
和PropB
)?
答案 0 :(得分:2)
这个适用于我:
var props = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
答案 1 :(得分:0)
Parent类(你已经定义了构造函数)对它的子类知之甚少,这就是为什么它只返回PropA
如果在B
类中定义约束器,它将返回两个属性
答案 2 :(得分:0)
基类A
的构造函数在派生类B
的构造函数之前运行,因此您无法访问派生类的属性。
BTW:这对我来说没有意义,基类知道派生类!
答案 3 :(得分:0)
你可以这样做:
class A
{
public string PropA {set; get;}
public A()
{
}
protected virtual PropertyInfo[] GetProperties()
{
return this.GetType().GetProperties(BindingFlags.Public);
}
}
class B : A
{
public string PropB {set; get;}
public B() : base()
{
}
public new PropertyInfo[] GetProperties()
{
return this.GetType().GetProperties(BindingFlags.Public);
}
}
var b = new B();
var prop = b.GetPropeties();
答案 4 :(得分:0)
基类不应该知道它的派生类。它打破了开放封闭原则和利斯科夫替代原则。
您可以使用泛型和虚拟或抽象方法来解决此问题。另外,不要编写自己的O / R Mapper。那里有很多,有些必须满足你的需求!