执行'受保护的抽象覆盖'用于实现泛型接口的抽象类
本文关键字:实现 泛型接口 抽象类 用于 覆盖 受保护 执行 抽象 | 更新日期: 2023-09-27 18:05:21
我有一个看起来像这样的界面:
public interface ISomeInterface<out TEntityA, TEntityB>
where TEntityA : ISomeEntityA
where TEntityB : ISomeEntityB
{
TEntityA SomeMethod(TEntityB entityB);
}
另一方面,我有一个实现这个接口的抽象类,所以,使用智能感知,实现看起来是这样的:
public abstract class BaseAbstractClass : ISomeInterface<EntityA, EntityB>
{
public EntityA SomeMethod(EntityB entityB)
{
throw new NotImplementedException();
}
}
由于EntityA和EntityB分别是ISomeEntityA和ISomeEntityB的具体实现,似乎我被迫抛出NotImplementedException,这看起来很脏。
由于您不能在重写方法时更改签名,我的问题是:"是否有一种方法可以执行'受保护的抽象重写',以便在BaseAbstractClass的继承类中强制实现 someemethod ?"
为了更清晰,我想这样做(它不会编译):
public abstract class BaseAbstractClass : ISomeInterface<EntityA, EntityB>
{
public abstract override EntityA SomeMethod(EntityB entityB);
}
你为什么不叫别的名字呢?
public abstract class BaseAbstractClass : ISomeInterface<EntityA, EntityB>
{
protected abstract EntityA SomeMethodImpl(EntityB entityB);
public EntityA SomeMethod(EntityB entityB)
{
return SomeMethodImpl(entityB);
}
}
直接去掉override
。这将编译:
public abstract class BaseAbstractClass : ISomeInterface<EntityA, EntityB>
{
public abstract EntityA SomeMethod(EntityB entityB);
}
它被称为"抽象接口实现"