У меня есть иерархия наследования с суперклассом Transaction
. Я использую его как переменную в одном из моих классов, но у меня возникают проблемы с преобразованием его в определенные типы, например, GameTransaction
, ScienceTransaction
и т. Д.Преобразование суперкласса в определенный производный тип
Каждый конкретный тип имеет определенные атрибуты, поэтому я должен проверить, этот тип через typeof
затем бросил его, так что я в конечном итоге с If.. else if..
и так далее, в зависимости от того, сколько производных классов есть для Transaction
.
Это раздражает. Есть ли другой способ обойти это? Любой шаблон дизайна для этого?
Звучит как проблема дизайна. Разделите свой код, который работает с обобщенным 'Transaction' из кода, который работает на' GameTransaction' и т. Д. Вызывающий более специализированный код должен знать тип транзакции, с которой он имеет дело. Конечно, трудно сказать наверняка, не видя того, чего вы пытаетесь достичь. – GriffeyDog
Почему вы отметили это как 'C#', так и 'java'? Что вы используете? –
Спасибо, ребята, я использую C#, но вы можете использовать java-программистов так, как минимум ..Griffey моя транзакция супер класса используется в моем классе фасада (шаблон проектирования), поэтому каждый раз существуют методы или службы, которые включают или требуют кастинга для определенного типа. Я страдаю If .. Else IF .. Else IF .... проверяя тогда кастинг для определенного типа для доступа к этому свойству или атрибута любым другим способом? – Patrick87