Принятие ограниченного набора подтипов в аргументе метода
Вопрос
Это с С# и .net 3.5.
Допустим, у меня есть следующий метод:
myMethod(myBaseClass mbc)
В моем проекте все следующие классы наследуются от myBaseClass.
ot1:myBaseClass
ot2:myBaseClass
ot3:myBaseClass
ot4:myBaseClass
Есть ли какие-нибудь трюки, которые позволят мне использовать myMethod с ot1 и ot3, но НЕ с ot2 и ot4, или мне придется перегружать каждый тип, который я хочу разрешить?
Решение
Интерфейс.Измените подпись метода на
myMethod(ICastableAsMyBaseClass mbc)
Затем реализуйте ot1 и ot3 ICastableAsMyBaseClass
.
Другие советы
Вы можете проверить класс mbc во время выполнения, но, очевидно, это не помешает вам вызвать метод в неправильное время во время компиляции.
Если вам нужна проверка типов во время компиляции, вам необходимо перегрузить метод для каждого типа, который вы хотите разрешить.
Не связан с StackOverflow