У меня есть три класса: Post
, Post<T>
и WallPost
.
Post - это абстрактный класс, представляющий запись в блоге со свойствами, такими как name
, text
, user
,и т.д.
Второй абстрактный класс - Post<T>
, универсальная версия post, так что я могу реализовать универсальный GetChildren(T Post)
, чтобы получить дочерние элементы post
и построить иерархический список.
Третий класс - это конкретный 'WallPost
', который является специальным сообщением для профиля пользователя.
public class WallPost : Post<WallPost>
И, наконец, класс Member
, который содержит коллекцию WallPosts
.
Я написал элемент управления, который берет коллекцию сообщений и отображает ее в дереве.Одно из свойств этого элемента управления -
public IList<Post<Post>> Posts
{
get; set;
}
(я использую дженерики, потому что мне нужно получить детей, GetChildren(T Post)
).и я установил параметр типа как Post, чтобы он принимал любой класс, который наследуется от post, wallpost, blogpost и т. д.
Теперь моя проблема заключается в том, что я хочу передать пользовательскую коллекцию WallPosts
типа IList<WallPost>
к функции, и я получаю эту ошибку:
Unable to cast object of type 'NHibernate.Collection.Generic.
PersistentGenericBag`1[BO.WallPost]'
to type 'System.Collections.Generic.IList`1[BO.Post`1[BO.Post]]'.
Я предполагаю, что это потому, что хотя вы можете написать что-то вроде Post p = new WallPost()
, вы не можете иметь List<Post> posts = new List<WallPost>()
В любом случаеЯ полностью сбит с толку, и я надеюсь, что прояснился.
Заранее спасибо
E
PS Я использую NHibernate, и нет никаких упоминаний о сумке.