[英]Perform a 'protected abstract override' for an abstract class which implements a generic interface
我有一个看起来像这样的界面:
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的继承类中强制执行SomeMethod ?
为了更清楚,我想做的是这样的(它不会编译) :
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);
}
这称为“抽象接口实现”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.