Принятие ограниченного набора подтипов в аргументе метода

StackOverflow https://stackoverflow.com/questions/1314629

  •  19-09-2019
  •  | 
  •  

Вопрос

Это с С# и .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 во время выполнения, но, очевидно, это не помешает вам вызвать метод в неправильное время во время компиляции.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top