У меня есть три класса, которые наследуются от более высокого базового класса, который мы будем называть UpperCaseLetters.Там есть классы LetterA, LetterB и LetterC.Я хочу построить интерфейс для подключения каждого из них к соответствующим подклассам LowerA, LowerB и LowerC.У меня есть один интерфейс, который имеет единственное свойство «UpperCaseLetter», которое эффективно хранит или ссылается на соответствующую заглавную букву.Это хорошо для случая, когда я хочу создать отдельный объект известного типа на уровне строчных букв, потому что я так же легко могу цитировать заглавные буквы вручную.
Мне нужно создать скрипт, способный просматривать мой существующий набор заглавных букв, и создать соответствующий объект строчных букв путем реализации интерфейса, чтобы я в итоге получил объект строчных букв, такой какLowerA, реализующее свойство из интерфейса, ссылающегося на объект LetterA, к которому он присоединен.
В C #, итерируя по циклу, когда я сталкиваюсь с элементом, который, кажется, не имеет соответствующего объекта LowerCaseLetter, как можно использовать информацию о типе из подкласса UpperCaseLetter (LetterA, LetterB или LetterC) для динамическогосоздать соответствующий объект LowerCaseLetter из соответствующего подкласса LowerCaseLetter (LowerA, LowerB или LowerC) без статического перечисления типов подклассов в каждом доступном регистре букв?
Заранее спасибо
РЕДАКТИРОВАТЬ: Кодчтобы продемонстрировать, что я имею в виду:
class UpperCaseLetter {
public bool Italic
}
class LetterA : UpperCaseLetter {
}
class LetterB : UpperCaseLetter {
}
interface LowerCaseLetter {
public UpperCaseLetter OriginalLetter;
}
class LowerA : LetterA, LowerCaseLetter {
}
class LowerB : LetterB, LowerCaseLetter {
}
void BuildLowerCaseLetters {
foreach (var upperLetter in setOfImaginaryBuiltLetterObjects){
//below is how the code currently works, but any time I build a new pair of
//classes, say, LetterD and LowerD, this section needs to be modified.
//Looking for a dynamic solution
if (upperLetter is LetterA){
new LowerA();
} else if (upperLetter is LetterB){
new LowerB();
}
}
}