私は、インターフェイスで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>'
)をコンパイルしませんし、また私の文脈で意味がありません。
私はT
型パラメータによって制限することなくパラメータなしのコンストラクタを持つようにISnack
秒を強制することができれば、その後、Kitchen<T>
でT
を簡単ISnack
である可能性があります。それについてどうやって行くの?
Marc、Ditto!あなたは私が試したことのすべてを概説しました。Hmmmランタイムは、私が推測しているオプションです – nawfal
@nawfal OKなら、キッチンに第2引数を追加することができます: 'abstact class Kitchen T:ISnack
S:new() ' –@FelixK。別の答えにすることはできますか? – nawfal