C# 在方法中传递和返回两个不同的泛型类
现在,我对Generic1使用T,但可以理解的是,当我传入sPayload时会出现错误,因为我不确定如何指定第二个泛型类型C# 在方法中传递和返回两个不同的泛型类,c#,generics,C#,Generics,现在,我对Generic1使用T,但可以理解的是,当我传入sPayload时会出现错误,因为我不确定如何指定第二个泛型类型 public static Generic1 SendReceive<Generic1>(string sUrl, Generic2 sPayload) { using(WebClient webclient = new WebClient()) { webclient.Headers[HttpRequestHeader.Cont
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 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 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>(...);
您可以使用这种方式添加多个参数
public static T1 SendReceive<T1,T2,...Tn>(string sUrl, TRequest sPayload)
{
//TODO Code
}
然后你可以这样称呼它
className.SendResponse<Class1, Class2,...Classn>(...);