如果这些实现没有默认构造函数,是否可以将类型参数限制为抽象类的具体实现?
例如,如果我有:
public abstract class Animal
{
private Animal()
{
}
public Animal(string name)
{
// ...
}
// ...
}
public class Penguin : Animal
{
// ...
}
public class Chimpanzee : Animal
{
// ...
}
而且我还有以下课程:
public class ZooPen<T>
where T : Animal
{
// ...
}
我想允许new ZooPen<Penguin>()
and new ZooPen<Chimpanzee>()
,但我想禁止new ZooPen<Animal>()
。
这可能吗?