Mono-1.1.9.1で自己パラメータ渡しのジェネリッククラス定義が可能になった
パラメータ型にサブクラスを指定するもの。それをインタフェースに出すためにキャストできるようにするもの。こういうの
public class ThisType<SubType> where SubType: ThisType<SubType> { public SubType Self() { return (SubType) this; } } public Sub : ThisType<Sub> { public string Hoge() { return "hoge"; } } public class Init { public static void Main() { Sub sub = new Sub(); Sub ref = sub.Self(); System.Console.WriteLine(ref.Hoge()); } }
1.1.8.3ではgmcsでのコンパイル自体だめだったけど、1.1.9.1ではコンパイル可能でうまく動くようになっている。