我有以下内容:
public interface IEntity
{
IEntityContent Data { get; set; }
}
public interface IEntityContent { }
public interface IThingService<T>
{
void DoThing(T item);
}
public class BaseEntity<T> : IEntity
where T : IEntityContent
{
public abstract T Data { get; set; }
}
public class FooEntity : BaseEntity<FooContent>
{
public override FooContent Data { get; set; }
}
public class FooContent : IEntityContent
{
// Some properties
}
public class ThingService<T> : IThingService<T>
where T : IEntity
{
public void DoThing(T item)
{
Serializer.Instance.Serialize(item.Content);
}
}
的签名Serializer.Instance.Serialize
是:
string Serialize<T>(T from)
但我得到以下信息:
“BaseEntity<T>”没有实现接口成员“IEntity.Data”。“BaseEntity<T>.Data”无法实现“IEntity.Data”,因为它没有匹配的返回类型“IEntityContent”
为什么是这样?就目前而言,我被迫创建一堆几乎相同的强类型实现IThingService
——这是一种重复的卸载——只是为了指定不同的类型参数,据我所知,它们应该是通用的。
这是否与缺乏协方差有关BaseEntity
?我怎样才能ThingService<T>
工作?