您不能创建包含泛型参数的类型的实例。
但是,它不是抽象的或接口。
我正在阅读 StructureMapTypeExtensions
助手,我遇到了:
public static bool IsConcrete(this Type type)
{
return (!type.IsAbstract && !type.IsInterface);
}
我对这种解释方式并不满意,因为似乎一个类型是具体的,那么应该有可能存在它的一个实例。例如,我很难考虑像typeof(List<>).MakeGenericType(typeof(List<>).MakeGenericType(typeof(List<>)))
具体类型这样的东西。
我知道 C# 中的开放泛型类型和 C# 中的抽象类型在它们偏离具体化的方式上非常不同,但与此同时,它们两者都有一些基本的抽象。如果您认为抽象类和接口的参数是操作实现,则可以将抽象类和接口解释为参数化。然而,这有点离题了。
我真正想知道的是一种将这些概念与一致的语义统一起来的方法,这种语义不会让人觉得像谎言那样可憎的东西List<List<List<>>>
可以是具体的。我们有一种通用的方式来描述这种区别吗?