У меня есть два интерфейса, подобные следующему:
public interface IEntityViewModel<T> : IEntityViewModel where T : class, ICLEntity
{
new T Entity { get; set; }
}
public interface IEntityViewModel
{
void LoadEntity(int primaryKey);
bool? DialogResult { get; set; }
ICLEntity Entity { get; set; }
}
Когда я реализую класс, как я могу убедиться, что свойство Entity, которое появляется в классе, является универсальным T?Вот пример класса:
public abstract class EntityConductor<T> : IEntityViewModel<T>
where T : class, ICLEntity
{
public T Entity
{
get; set;
}
}
Компилятору требуется также добавить реализацию IEntityViewModel, например:
ICLEntity IEntityViewModel.Entity
{
get
{
return ActiveItem.Entity;
}
set
{
ActiveItem.Entity = value as T;
}
}
, но затем я получаю два свойства Entity в классе, которыйне то, что мне нужно.При реализации универсального интерфейса мне нужно, чтобы свойство Entity было типа T, а если не универсальное - типа ICLEntity.
Как это можно сделать?Я что-то упустил?Я использую .NET 4.0, может ли мне здесь помочь ковариация?
Спасибо!