繁体   English   中英

在方法中传递和返回两个不同的泛型类

[英]Passing and returning two different generic classes in method

现在,我在Generic1上使用T ,但是可以理解的是,当我传入sPayload时遇到错误,因为我不确定如何指定第二个泛型类型。

public static Generic1 SendReceive<Generic1>(string sUrl, Generic2 sPayload)
{
    using(WebClient webclient = new WebClient())
    {
        webclient.Headers[HttpRequestHeader.ContentType] = "application/json";
        string response = webclient.UploadString(sUrl, JsonConvert.SerializeObject(sPayload));
        Generic1 parsedResponse = JsonConvert.DeserializeObject<Generic1>(response);
        return parsedResponse;
    }
}

我想避免使用条件语句并对即将传入的潜在类型进行硬编码。我只是不确定如何执行此操作。

您需要在声明中同时指定两种类型:

public static TResult SendReceive<TResult, TPayLoad>(string sUrl, TPayLoad sPayload)
{
    using(WebClient webclient = new WebClient())
    {
        webclient.Headers[HttpRequestHeader.ContentType] = "application/json";
        string response = webclient.UploadString(sUrl, JsonConvert.SerializeObject(sPayload));
        TResult parsedResponse = JsonConvert.DeserializeObject<TResult>(response);
        return parsedResponse;
    }
}

您可以通过用逗号分隔多个通用类型来指定它们

public static TResponse SendReceive<TRequest,TResponse>(string sUrl, TRequest sPayload)
{
   ....
}

您可以使用这种方式添加多个参数

public static T1 SendReceive<T1,T2,...Tn>(string sUrl, TRequest sPayload)
{
   //TODO Code
}

然后你可以这样称呼它

className.SendResponse<Class1, Class2,...Classn>(...);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM