私は大きな抽象クラスInfoBase
をたくさん持っています。次に、いくつかのサブクラスがあります。サブクラスには、いくつかのプロパティがあります。異なるサブクラスの初期化リスト
private static InfoBase CreateInfo(Dictionary<string, string> userInput) {
InfoBase info;
if(userInput["InfoType"] == "SomeInfo") {
info = new SomeInfo {
sharedData1 = Process(userInput["data1"]),
sharedData2 = ProcessDifferently(userInput["data2"] + userInput["AuxData"]),
// ...
specialData1 = Something(userInput["blah"])
};
}
else if(userInput["InfoType"] == "OtherInfo") {
// ... And so on
}
return info;
}
ほとんどinfo
オブジェクトのすべてのフィールドが同じように初期化されますので、私は」:私はこのような何かが、その後、返されますInfoBase
のサブクラスのオブジェクトをinstansiateするための情報を持つオブジェクトを受け取るでしょうコピー/貼り付けの代わりにその初期化を共有したいのですが、詳細を変更するだけです。私はinfo.data1 = ...;
の20行を持つ代わりに、初期化リストで共有初期化を行いたいと思います。これは可能ですか?理想的には、このような何か:
InfoBase info = WhateverMagicStuff {
sharedData1 = // ...
};
SomeInfo specificInfo = SomeInfo(info);
specificInfo.specialData1 = // ...