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