Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在方法中传递和返回两个不同的泛型类_C#_Generics - Fatal编程技术网

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

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

现在,我对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 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>(...);