У меня большой, абстрактный класс InfoBase
с большим количеством свойств. Тогда есть несколько подклассов, которые обладают несколькими свойствами. Я Получать объект с информацией, чтобы instansiate подкласс объекта 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
объект будет инициализирован таким же образом, так что я d хотел бы поделиться этой инициализацией вместо копирования/вставки ее и просто изменить специфику. Я хотел бы сделать совместную инициализацию с помощью списка инициализации, вместо того, чтобы иметь двадцать строк info.data1 = ...;
. Это возможно? В идеале, что-то вроде этого:
InfoBase info = WhateverMagicStuff {
sharedData1 = // ...
};
SomeInfo specificInfo = SomeInfo(info);
specificInfo.specialData1 = // ...