[英]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.