我一直在試圖產生應該返回一個通用接口根據輸入參數的函數的不同對象(比如Item
)(我把它叫做一個上下文)現在getItem(A context)
C#中的靜態方法的多態性和重載。
一廠,假設我定義了一個新的上下文類型:B
,它繼承自A
。
我想返回一個不同的項目,這取決於傳遞給工廠的對象是否爲B
或A
。
我試着做如下(重載方法):
class Factory
{
static Item getItem(A context) {...}
static Item getItem(B context) {...}
}
這工作得很好,如果我做這樣的事情:
B bContext=new B();
Item it=Factory.getItem(bContext);
但是,如果我投和對象類型A
:
A bContext=(A) new B();
Item it=Factory.getItem(bContext);
第一種工廠方法被調用。
我認爲即使在演員演員之後,多態性也能確保第二種方法的執行,並且我想知道我是否遺漏了某些東西?
我知道我可以繼續使用單一方法,並使用is
運算符來檢查變量的類型,但我認爲我上面介紹的解決方案更優雅一些。