C# 带有泛型的响应类<;T>;

C# 带有泛型的响应类<;T>;,c#,generics,C#,Generics,很抱歉,如果以前有人问过这个问题,但我找不到,也不确定要搜索什么 我有一个这样的通用响应类: public class ResponseModel<T> { public T Data { get; set; } public Exception Ex { get; set; } public string Message { get; set; } public bool Success { get; set; } } 公共类响应模型 { 公共T

很抱歉,如果以前有人问过这个问题,但我找不到,也不确定要搜索什么

我有一个这样的通用响应类:

 public class ResponseModel<T>
{
    public T Data { get; set; }
    public Exception Ex { get; set; }
    public string Message { get; set; }
    public bool Success { get; set; }
}
公共类响应模型
{
公共T数据{get;set;}
公共异常Ex{get;set;}
公共字符串消息{get;set;}
公共bool成功{get;set;}
}
我想做一些类似于下面代码的事情,这样我就可以通过执行
return retVal.Set(responseModeObject)将错误传递到堆栈上

公共响应模型集(响应模型rm)
{
Ex=rm.Ex;
Message=rm.Message;
归还这个;
}
如果
T
类在
retVal
responseModeObject
之间是相同的,那么这可以正常工作,但如果它们不匹配,则不会编译

是有办法做到这一点还是我只是索尔?

这样行吗

公共响应模型集(响应模型rm)
{
Ex=rm.Ex;
Message=rm.Message;
归还这个;
}
这能用吗

公共响应模型集(响应模型rm)
{
Ex=rm.Ex;
Message=rm.Message;
归还这个;
}

您可以创建一个接口

公共接口IResponseModel
{
异常Ex{get;set;}
字符串消息{get;set;}
bool成功{get;set;}
}
公共类响应模型:IResponseModel
{
公共T数据{get;set;}
公共异常Ex{get;set;}
公共字符串消息{get;set;}
公共bool成功{get;set;}
}
那么这个方法看起来像

公共响应模型集(IResponseModel rm)
{
Ex=rm.Ex;
Message=rm.Message;
归还这个;
}

该接口还允许您创建
IResponseModel
的集合,这些集合可能包含不同类型的泛型。它可能也适用于
异步
操作,如
任务
等。

您可以创建一个接口

公共接口IResponseModel
{
异常Ex{get;set;}
字符串消息{get;set;}
bool成功{get;set;}
}
公共类响应模型:IResponseModel
{
公共T数据{get;set;}
公共异常Ex{get;set;}
公共字符串消息{get;set;}
公共bool成功{get;set;}
}
那么这个方法看起来像

公共响应模型集(IResponseModel rm)
{
Ex=rm.Ex;
Message=rm.Message;
归还这个;
}

该接口还允许您创建
IResponseModel
的集合,这些集合可能包含不同类型的泛型。它可能也适用于
async
操作,如
Task
等。

您可以尝试将方法声明为:

public ResponseModel<T> Set<TOther>(ResponseModel<TOther> rm)
{
    Ex = rm.Ex;
    Message = rm.Message;
    return this;
}
公共响应模型集(响应模型rm)
{
Ex=rm.Ex;
Message=rm.Message;
归还这个;
}
示例用法:

ResponseModel<int> a = new ResponseModel<int>();
ResponseModel<string> b = new ResponseModel<string>();
b.Set(a); // It compiles
ResponseModel a=新的ResponseModel();
ResponseModel b=新的ResponseModel();
b、 集合(a);//它编译

您可以尝试将方法声明为:

public ResponseModel<T> Set<TOther>(ResponseModel<TOther> rm)
{
    Ex = rm.Ex;
    Message = rm.Message;
    return this;
}
公共响应模型集(响应模型rm)
{
Ex=rm.Ex;
Message=rm.Message;
归还这个;
}
示例用法:

ResponseModel<int> a = new ResponseModel<int>();
ResponseModel<string> b = new ResponseModel<string>();
b.Set(a); // It compiles
ResponseModel a=新的ResponseModel();
ResponseModel b=新的ResponseModel();
b、 集合(a);//它编译

没有,但这是一次很好的尝试。我还尝试了ResponseModel集(ResponseModel rm)和ResponseModel集(ResponseModel),但没有成功。第二个成功了,只是最后我没法“还这个”。没有,但这是一次很好的尝试。我还尝试了ResponseModel集(ResponseModel rm)和ResponseModel集(ResponseModel),但没有成功。第二个是有效的,只是最后我不能“返回这个”。我建议看一看现有的例子,看看如何解决这类问题,因为响应/结果对象是一个相当广为人知的模式,例如:谢谢。我将对此进行详细阅读。我建议看一看如何解决这类问题的现有示例,因为响应/结果对象是一种相当广为人知的模式,例如:谢谢。我会仔细阅读的。谢谢。这可能也行得通,但我首先同意了德米特里的建议,而且它行得通。非常感谢。实际上我更改了代码以使用您的答案。这样更好。谢谢现在我不必通过传入对象的类。谢谢。这可能也行得通,但我首先同意了德米特里的建议,而且它行得通。非常感谢。实际上我更改了代码以使用您的答案。这样更好。谢谢现在我不必传入传入对象的类。