是否有可能获得引用/指向类类型的指针并强制它从特定的基类派生?如何在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