簡體   English   中英

TOut類型必須是引用類型,才能在通用方法類型中用作參數T

[英]The Type TOut must be a reference type in order to use it as a parameter T in the generic type of method

我具有解析json響應的通用方法,但是當我嘗試在我的方法中調用它時,出現錯誤“ Type TOut必須是引用類型,才能將其用作方法的通用類型中的參數T ”。 請幫忙,讓我知道如何調用通用方法。

private static T TryParse<T>(string input, T defaultVal = default(T)) where T : class
    {
        try
        {
            var result = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(input);
            return result;
        }
        catch (Exception)
        {
            return defaultVal;
        }
    }

public async Task<Tuple<bool, string, TOut>> GetAsync<TOut>(
        Func<string, bool> successTest = null,
        Dictionary<string, string> parameters = null)
    {
        var result = await GetAsync(parameters);
        var response = await GetResponseContentAsync(result.Content);
        var responseObj = TryParse<TOut>(response);


        return Tuple.Create(true, response, responseObj);
    }

您的TryParse<T>方法說T必須是一個類( where T : class )。 您的GetAsync<TOut>方法允許T為任意值-對此沒有限制。

但是,在調用TryParse時,將TOut用作T 這就是問題TOut可以是任何東西,但是T只能是一個類。

TryParse刪除where T : class限制,或將其添加到GetAsyncwhere TOut : class )。 您要做什么取決於您的要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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