[英]C# generic class inheritance
我有其他類擴展的基類BaseRepository。
public class BaseRepository
{
protected RestClient client;
protected string url;
public BaseRepository ()
{
client = RestClient.GetInstance ();
}
public async Task<T> Find<T> (string id) {
dynamic response = await client.Find(url, id);
return DeserializeItem<T> (response);
}
}
然后我有一個UsersRepository類,它是從基類擴展的。
public class UsersRepository : BaseRepository
{
string url = "users";
static UsersRepository instance;
private UsersRepository ()
{
}
public static UsersRepository GetInstance() {
if (instance == null) {
instance = new UsersRepository ();
}
return instance;
}
}
我不知道如何將User
作為public async Task<T> Find<T> (string id)
方法的響應類型傳遞。 我可以在UsersRepository
創建此方法,但是我不想重復代碼。
public override function User Find(string id) {
return base.Find<User>(id);
}
任何幫助將非常感激。
看起來您實際上想要的是在基類而不是方法上定義的泛型類型。 另外,我認為您想在派生類的構造函數中設置基類中定義的url
。
public class BaseRepository<T>
{
protected RestClient client;
protected string url;
public BaseRepository ()
{
client = RestClient.GetInstance ();
}
public async Task<T> Find(string id) {
dynamic response = await client.Find(url, id);
return DeserializeItem<T> (response);
}
}
public class UsersRepository : BaseRepository<User>
{
static UsersRepository instance;
private UsersRepository ()
{
url = "users";
}
public static UsersRepository GetInstance() {
if (instance == null) {
instance = new UsersRepository ();
}
return instance;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.