我有一个稍微复杂的案例,我想要一个基类显式地实现非泛型接口,而派生类实现泛型接口。
接口:
public interface IIdentifiable<TKey> : IIdentifiable
{
TKey Id { get; }
}
public interface IIdentifiable
{
object Id { get; }
}
我通过在基类中声明一个抽象 getter 方法并让显式实现调用它来解决它:
public abstract class ModelBase : IIdentifiable
{
object IIdentifiable.Id
{
get { return GetId(); }
}
protected abstract object GetId();
}
public class Product : ModelBase, IIdentifiable<int>
{
public int ProductID { get; set; }
public int Id
{
get { return ProductID; }
}
protected override object GetId()
{
return Id;
}
}
请注意,基类没有Id它可以调用的类型化版本。