我對C#很陌生,目前正在開發一個使用EntityFramework的應用程序。我想擴展數據庫上下文類的功能,以便我可以調用方法getPool(),以便它發出該類的相應DbSet成員。C#:專門的模板方法 - 錯誤:類型'...'已經定義了一個名爲'...'的成員具有相同的參數類型
我需要將它作爲一個模板來實現,因爲它稍後將從其他模板中調用,這些模板只知道(全局)數據庫上下文對象和類型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
)的第二個專門定義的行。
問題是:如何解決這個問題?
只是評論:C#中使用術語泛型類型/方法,雖然語法可能類似由C++模板,他們有很大的不同。 –
這就是他所有的誤解來自哪裏,看到最後一句使用C++的措辭(在這種情況下,這不完全正確)。 @Stefan K .:我真的推薦深入瞭解模板和泛型之間的概念差異,否則你將沒有運氣...... –