ジェネリック パラメーターを含む型のインスタンスを作成することはできません。
ただし、抽象的でもインターフェイスでもありません。
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<>>>
が具体的である可能性があり、嘘のようには感じられません。この違いを説明する普遍的な方法はありますか?