Создать объект с неизвестным интерфейсом - PullRequest
1 голос
/ 21 декабря 2011

У меня есть класс с именем Location, и он может быть Location<IClub> или Location<IRestaurant>.

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

Мне нужно создать Location на основе строкового значения в записи.

Я пытался сделать это;

        object topLoc = null ;

        if (record.type == "club")
            topLoc = new Location<IClub>();

но я не могу получить доступ ни к одному из свойств Location.

Я также не могу создать объект в операторе if, как при выходе из объекта if, находящегося вне области действия.

1 Ответ

2 голосов
/ 21 декабря 2011

Похоже, что дженерики не тот инструмент, который вам нужен. Вместо использования обобщений для аннотирования типа местоположения рассмотрите возможность использования enum.

public enum LocationKind
{
    Restaurant,
    Club
}

Location location = new Location(LocationKind.Club);
// set up & use location as you see fit; expose the LocationKind through a
// property or something else along those lines
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...