是否有可能獲得引用/指向類類型的指針並強制它從特定的基類派生?如何在C#中引用特定的類類型?
我正在寫一個客戶端庫,需要與服務器協商選擇一種算法用於通信。我希望庫的用戶能夠選擇要使用的算法的子集,而不是固定到我最初提供的集合(即,不固定在某種工廠類中)。
理想情況下,這可以通過傳入從一些常見「算法」子類型派生的類的列表來完成。我看過「Type」對象,但我必須自己檢查所有類型。有沒有辦法讓編譯器爲我做這件事?我想要的是「類型<算法>」,但我找不到像這樣的東西。或者完全有不同的方式來做到這一點?
的是什麼,我認爲到目前爲止的例子:
public class Algorithm {
public static abstract Name;
}
public class Client {
public MyLib(Type[] algorithms) {
m_algorithms = algorithms;
// ... Check they all derive from Algorithm
}
public Communicate() {
// ... Send list of algorithm names to server
// ... Create instance of algorithm dictated by server response
}
}
這也可以工作,或應該工作哈哈! (道格拉斯答案) 只需使用arraylist = List <>的繼承者,它應該允許您傳入一個類型化的列表對象,強類型爲您的基類或子類型,就像您將它放入As Algorithm一樣。我認爲它是抽象的,因爲它似乎沒有被實例化的理由,所以將其抽象並定義算法對象對應用程序或庫的意義的本質。 – IbrarMumtaz 2010-08-04 00:05:34
將有很多狀態(未包含在本示例中)附加到算法。我需要實例化一個,並且不想實例化所有這些。對不起,如果這不明確在我的文章。 – 2010-08-04 08:48:38