【发布时间】:2011-03-05 14:10:50
【问题描述】:
像这样:
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 个属性。我不想手动设置所有这些值,尤其是如果我的继承类只有几个额外的属性。
反思似乎暗示了答案。
我在Using inheritance in constructor (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
}
edit2 这个问题与其说是一个实际问题,不如说是一个思考练习——为了我的目的,我可以很容易地做到这一点:(假设我的“基类”可以复制)
public class remoteStatusCounts
{
public int statusCount;
public RemoteStatus rStatus;
public remoteStatusCounts(RemoteStatus r)
{
rStatus = r;
statusCount = getStatusCount();
}
}
【问题讨论】:
-
或代码生成,但我宁愿不走那条路。
-
注意:你的类名应该以大写字母开头。
</code-format-nazi>
标签: c# reflection inheritance jira copy-constructor