Это вопрос, связанный с другим вопросом, который я задал , который относится только к NHibernate
, но я начинаю думать, что мой вопрос может быть гораздо более фундаментальным, чем этот.
По причинам, связанным с NHibernate
, у меня есть базовый абстрактный класс (Listing
) и классы, которые наследуют его (Listing_UK
, Listing_US
и т. Д.).
Они функционально идентичны.
Я понимаю, почему это не работает:
List<Listing> test = new List<Listing_UK>();
Сейчас я делаю эквивалент этого:
List<Listing> test = new List<Listing>();
test.Add(new Listing_UK() as Listing);
, который работает, но мне нужны классы длябыть более взаимозаменяемыми, как указано выше.
Я ценю, что основополагающая идея того, что я делаю, немного странная, но есть ли у кого-нибудь совет?
РЕДАКТИРОВАТЬ:
Я явно сделал свои примеры слишком абстрактными.
Я пытался избегать создания этого слишком NHibernate
-конкретного, так что это на самом деле отличается от моего другого вопроса(и потому что я думаю, что то, что я спрашиваю, является более фундаментальным), но то, что я в основном хочу достичь, это:
IQueryOver<Listing,Listing> test = null;
if(condition) {
test = DBSession.QueryOver<Listing_UK>();
} else {
test = DBSession.QueryOver<Listing_US>();
}
test.Where(l => l.Field == "value").List<Listing>();
Из реакций, которые я получаю здесь, я достаточно уверен, что то, что япрошу не возможно.