簡體   English   中英

創建接受 T 作為枚舉的泛型類

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM