Передайте список типов, ограничивая типы классами, производными от определенного родителя, в c # - PullRequest
0 голосов
/ 14 августа 2010

У меня есть метод в объектно-ориентированной базе данных, который создает таблицы на основе их типа.

Я хочу иметь возможность отправлять список типов, которые будут созданы, но я надеюсь ограничить ихтолько классы, производные от определенного базового класса (MyBase).

Есть ли способ, которым я могу требовать это в сигнатуре метода?Вместо

CreateTables(IList<Type> tables)

Могу ли я сделать что-то, что будет

CreateTables(IList<TypeWithBaseTypeMyBase> tables)

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

Есть предложения?

Ответы [ 3 ]

1 голос
/ 14 августа 2010

Вы можете сделать следующее:

CreateTables(IList<MyBase> tables)
{
    // GetType will still return the original (child) type.
    foreach(var item in tables)
    {
        var thisType = item.GetType();
        // continue processing
    }
}
0 голосов
/ 14 августа 2010

Почему бы просто не изменить подпись на:

CreateTables(IList<BaseType> tables)
0 голосов
/ 14 августа 2010

Вы пробовали это?

CreateTables(IList<MyBase> tables) 

Я думаю, это все, что вам нужно сделать.

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