だから私は素晴らしいJon Skeetのこのビデオを見ていました: http://www.youtube.com/watch?v=3DkISWIouY4 (最初から見て、私が質問しようとしている部分を見てください!)
したがって、次のコードを検討してください。
internal class Program
{
private static void Main(string[] args)
{
var x = new DeepContainer<string>();
}
}
public class DeepContainer<T> : SimpleContainer<DeepContainer<DeepContainer<T>>>
{
public DeepContainer()
{
}
}
public class SimpleContainer<TSomething>
{
public TSomething Something { get; set; }
public SimpleContainer()
{
}
}
TSomething を実際の型に展開できない理由として、これが実行されないことはわかっています。<SimpleContainer<SimpleContainer<SimpleContainer<SimpleContainer...
ただし、 の定義を次のように変更するとDeepContainer<T>
:
public class DeepContainer<T> : SimpleContainer<DeepContainer<T>> // One level of Deepcontainer omitted
突然それは機能します。
しかし、私の考えではそうではありません。TSomething の型を展開しようとすると、次のようになるためです
SimpleContainer<SimpleContainer<SimpleContainer<SimpleContainer<SimpleContainer
。
これがどのように機能するのか、私には理解できません。