Я думаю, что единственный способ заставить это работать - это сделать что-то вроде:
public class BaseClass<TChild> where TChild : BaseClassCollection {
public virtual ICollection<TChild> Collection { get; set; }
}
public class ChildClass<TChild> : BaseClass<TChild> where TChild : ChildClassCollection {
public override ICollection<TChild> Collection { get; set; }
}
public class BaseClassCollection { }
public class ChildClassCollection : BaseClassCollection { }
Проблема в том, что ключевое слово new
нарушает наследование, и тогда ваше отображение полагается на это наследование. Вы действительно должны избегать использования new
в любом месте, потому что это не очень хорошая идея; возьмите NHibernate из смеси, и вы получите различное поведение в зависимости от того, как вы сыграете свой класс; разыграйте его как BaseClass
, и вы получите нечто совершенно иное, чем если бы вы раздали его как ChildClass
.
Если это не тот ответ, который вы ищете, я прошу прощения, но я не думаю, что можно заставить его работать, если вам нужно использовать ключевое слово new
.