を作成します。動的に私の問題を説明するためにここではダミーコードをジェネリックパラメータとして型自体を使用してジェネリック型
私は私をidentiftyことができない場合、私は、私のジェネリック型から型を作ることができますどのようにpublic class A<TX, TA> where TA : A<TX, TA>
{
}
public void Do()
{
var doy = typeof(A<,>).MakeGenericType(typeof(string), null/*??????*/));
}
タイプをパラメータとして使用するには?
ありがとうございました。
編集、静的にそれをやっての例:
public abstract class A<TX, TA> where TA : A<TX, TA>
{
public TA ChainMethod()
{
return (TA)this;
}
}
public class AConcrete : A<string, AConcrete>
{
public AConcrete OtherMethod()
{
return this;
}
}
public class App
{
public static void Start()
{
new AConcrete().ChainMethod().ChainMethod().OtherMethod();
}
}
これがCRTPある場合 - 本当に醜い取得する予定です。どのようにC#でそれを表現しますか? 'A <文字列、A <文字列、A <文字列、A <文字列、........ '? –
できません。しかし、「動的に」追加することは、赤ちゃんです - 静的にこれを行う方法はありません。 'A' - どうやって "???"を展開しますか?どこかに基盤がなければならない。クラスそのものは合法ですが、それをブートストラップするために少なくとも1つの他のクラスが必要です。 [エリックリペットのコメント](https://blogs.msdn.microsoft.com/ericlippert/2011/02/03/curiouser-and-curiouser/)上でこのことに混乱し、多分あなたは関係なく、有効なままで欲しいものを達成していません。 –
より高いレベルの要件について説明できますか? – Andrei