私はC#を初めて使用し、現在EntityFrameworkを使用してアプリケーションを開発しています。データベースコンテキストクラスの機能を拡張して、メソッドgetPool()を呼び出して、クラスの対応するDbSetメンバーを渡すことができるようにします。
後で他のテンプレートから呼び出されるため、テンプレートとして実装する必要があります。他のテンプレートは、(グローバル)データベースコンテキストオブジェクトと、データベースにクエリを実行するタイプT(特定のスーパークラスを持つ)について知っているだけです。
これが私が試したものです(少し単純化されています-元の例は複雑すぎます):
public class TestContext : DbContext
{
public DbSet<TestA> ATests { get; set; }
public DbSet<TestB> BTests { get; set; }
public IQueryable<T> getPool<T>() where T : TestA {
return (IQueryable<T>)ATests;
}
public IQueryable<T> getPool<T>() where T : TestB {
return (IQueryable<T>)BTests;
}
}
エラーメッセージは
エラー:タイプ「...」は、同じパラメータータイプを持つ「...」というメンバーをすでに定義しています。
そして、それは私のテンプレートの2番目の特殊な定義の行で発生します(public IQueryable<T> getPool<T>() where T : TestB
)。
問題は、これをどのように修正するかです。