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は簡単に. それについてどうやって行くのですか?TTKitchen<T>ISnack