我对 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;
}
}
错误信息是
错误:类型“...”已经定义了一个名为“...”的成员,具有相同的参数类型。
它出现在我的模板 ( public IQueryable<T> getPool<T>() where T : TestB
) 的第二个专门定义的行。
问题是:如何解决这个问题?