このような:
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のプロパティがあると想像してください。特に、継承されたクラスに2、3の追加プロパティしかない場合は、これらすべての値を手動で設定したくありません。
振り返りは答えをほのめかしているようです。
コンストラクターでの継承の使用(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();
}
}