ISnack
クラスによって実装されたときに、デフォルトのパラメーターなしのコンストラクターが必要なインターフェイスがあります。基本的にこれ:
public interface ISnack<T> where T : new()
{
}
<T> where T : new()
パラメーターなしのコンストラクターを強制するためだけに使用します。
次に、この方法でインターフェイスを実装します。
public class Cutlet : ISnack<Cutlet>
{
}
これは機能し、Cutlet
クラスにパラメーターのないコンストラクターがあることを確認するだけです。
今、私は抽象基本クラスを持っていますKitchen
:
public abstract class Kitchen<T> where T : ISnack
{
}
要件は、 であるKitchen
必要がある場所に制約がT
必要であることISnack
です。しかし、存在しないため、これは機能しませんISnack
が、 しかありませんISnack<T>
。
これを試したら
public abstract class Kitchen<T> where T : ISnack<T>
{
}
それはコンパイルされず('T' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'T' in the generic type or method 'ISnack<T>'
)、私のコンテキストでは意味がありません。
型パラメーターISnack
による制約なしで s にパラメーターなしのコンストラクターを持たせることができれば、 inは簡単に. それについてどうやって行くのですか?T
T
Kitchen<T>
ISnack