14

次のエラーが発生します。

エラー1Tメソッド
' 'のタイプパラメータ''の制約は、インターフェイスメソッド''のタイプ パラメータ' 'genericstuff.Models.MyClass.GetCount<T>(string)の制約と一致する必要があります。 代わりに、明示的なインターフェイスの実装を使用することを検討してください。
Tgenericstuff.IMyClass.GetCount<T>(string)

クラス:

 public class MyClass : IMyClass
 {
     public int GetCount<T>(string filter)
     where T : class
       {
        NorthwindEntities db = new NorthwindEntities();
        return db.CreateObjectSet<T>().Where(filter).Count();
       }
 }

インターフェース:

public interface IMyClass
{
    int GetCount<T>(string filter);
}
4

3 に答える 3

36

実装では、Tジェネリックパラメーターをクラスに制限しています。インターフェイスにこの制約はありません。

コードをコンパイルするには、クラスから削除するか、インターフェイスに追加する必要があります。

クラス制約CreateObjectSet<T>()を必要とするメソッドを呼び出しているので、それをインターフェースに追加する必要があります。

public interface IMyClass
{
    int GetCount<T>(string filter) where T : class;
}
于 2012-08-07T12:29:01.217 に答える
3

インターフェイスメソッドにも制約を適用するか、実装から削除する必要があります。

実装の制約を変更してインターフェースコントラクトを変更しています-これは許可されていません。

public interface IMyClass
{
    int GetCount<T>(string filter) where T : class;
}
于 2012-08-07T12:29:15.523 に答える
2

インターフェイスも制約する必要があります。

public interface IMyClass
{
    int GetCount<T>(string filter) where T : class;
}
于 2012-08-07T12:30:42.277 に答える