[英]Create Generic Class Accepting T as an enum
我有這個類,我希望它接受泛型作為枚舉我可以將它傳遞到構造函數中,但我想使用泛型。
這是我的界面:
public interface ITrnApi<TEnum> : IDisposable where TEnum : struct
我希望我的班級像這樣
public class TrnApi<TEnum> : ITrnApi<TEnum> where TEnum : struct
{
private readonly HttpClient _http;
public TrnApi(HttpClient http, TEnum company)
{
_http = http;
_http.BaseAddress = company.ToBaseUrl().ToUri();
//public enum Company
//{
// test = 1,
// othertest = 2
//}
}
}
但得到這個錯誤:
“TEnum”不包含“ToBaseUrl”的定義,最佳擴展方法重載“Extentions.ToBaseUrl(Company, string)”需要“Company”類型的接收器
我怎樣才能做到這一點?
System.Enum
約束從 C# 7.3 開始可用。
public class TrnApi<TEnum> : ITrnApi<TEnum> where TEnum : struct, Enum
{
private readonly HttpClient _http;
public TrnApi(HttpClient http, TEnum company)
{
_http = http;
_http.BaseAddress = company.ToBaseUrl().ToUri();
/* ... */
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.