我有兩個接口:實現抽象/接口方法
public interface IController
{
void doSomething(IEntity thing);
}
public interface IEntity { ... }
一個示例實現將是:
public class ControllerImplA : IController
{
public void doSomething(IEntity entity)
{
EntityImplA entityForA = (EntityImplA)entity;
...
}
}
public class EntityImplA : IEntity { ... }
的ControllerImplA.doSomething()
的entity
參數將始終爲EntityImplA
。同樣,ControllerImplB.doSomething()
的entity
參數將始終爲EntityImplB
,其他實現等等。
有沒有辦法避免在我當前的代碼中使用向下轉換?換句話說,我想要做這樣的事情:
public class ControllerImplA : IController
{
public void doSomething(EntityImplA entity) { ... }
}
沒有修改接口?那麼如果使用抽象父類而不是接口呢?
「有沒有辦法避免使用向下轉換」使用泛型。 「沒有修改接口」呃... – BoltClock
是否有一個原因,你可以改變你的接口到一個抽象類,但不能修改接口本身? – HimBromBeere
如果你可以用抽象類替換接口,我想你可以修改它們來使用泛型。 – Evk