像这样:
public class remoteStatusCounts : RemoteStatus
{
public int statusCount;
public remoteStatusCounts(RemoteStatus r)
{
Type t = r.GetType();
foreach (PropertyInfo p in t.GetProperties())
{
this.property(p) = p.GetValue(); //example pseudocode
}
}
}
这个例子有点简单(它来自 Jira API - RemoteStatus 有 4 个属性),但想象一下基类有 30 个属性。我不想手动设置所有这些值,特别是如果我继承的类只有几个额外的属性。
反思似乎暗示了一个答案。
我在使用构造函数中的继承 (publix X () : y)看到我可以调用基类构造函数(我认为?如果我错了请纠正我),但我的基类没有构造函数 - 它派生自jira wsdl
public remoteStatusCounts(RemoteStatus r) : base(r) { //do stuff }
编辑
我可以想象 2 个有效的解决方案:上面概述的一个,以及某种类似的关键字this.baseClass
,type(baseclass)
并且被这样操作,充当一种指向this
. 所以,this.baseClass.name = "Johnny"
将是完全相同的事情this.name = "Johnny"
出于所有意图和目的,我们假设基类有一个复制构造函数——也就是说,这是有效的代码:
public remoteStatusCounts(RemoteStatus r) {
RemoteStatus mBase = r;
//do work
}
编辑2 这个问题更像是一个思考练习而不是一个实际问题——为了我的目的,我可以很容易地做到这一点:(假设我的“基类”可以复制)
public class remoteStatusCounts
{
public int statusCount;
public RemoteStatus rStatus;
public remoteStatusCounts(RemoteStatus r)
{
rStatus = r;
statusCount = getStatusCount();
}
}