Принятие ограниченного набора подтипов в аргументе метода - PullRequest
1 голос
/ 22 августа 2009

Это с C # и .net 3.5

Допустим, у меня есть следующий метод:

myMethod(myBaseClass mbc)

В моем проекте все следующие классы наследуются от myBaseClass.

ot1:myBaseClass
ot2:myBaseClass
ot3:myBaseClass
ot4:myBaseClass

Существуют ли какие-либо приемы, которые позволят мне использовать myMethod с ot1 и ot3, но НЕ с ot2 и ot4, или мне в основном приходится перегружать каждый тип, который я хочу разрешить?

Ответы [ 2 ]

5 голосов
/ 22 августа 2009

Интерфейс. Измените подпись вашего метода на

myMethod(ICastableAsMyBaseClass mbc)

Тогда пусть ot1 и ot3 реализуют ICastableAsMyBaseClass.

2 голосов
/ 22 августа 2009

Вы можете проверить класс mbc во время выполнения, но очевидно, что это не помешает вам вызвать метод с неправильным временем во время компиляции.

Если вы хотите проверять типы во время компиляции, вам нужно перегрузить метод для каждого типа, который вы хотите разрешить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...