c# - 将 TResponse 转换为 IRequestPostProcessor 中的 Response 类
问题描述
我是 C# 新手,我需要一些帮助才能在 mediatr 中实现 IRequestPostProcessor。
我有一个后处理器行为,TResponse 始终是包装另一个对象(数据)的通用响应类。在 NullUnauthorizedPropsBehaviour 中,我需要访问 Response 属性以迭代 Data 属性以获取它们的属性。
public class NullUnauthorizedPropsBehaviour<TRequest, TResponse> : IRequestPostProcessor<TRequest, TResponse>
{
public Task Process(TRequest request, TResponse response, CancellationToken cancellationToken)
{
// I need TResponse to be casted to Response class in order to access to its properties
return Task.CompletedTask;
}
}
我的 Response 类是通用的:
public class Response<T>
{
public Response()
{
}
public Response(T data, string message = null)
{
Succeeded = true;
Message = message;
Data = data;
}
public Response(string message)
{
Succeeded = false;
Message = message;
}
public bool Succeeded { get; set; }
public string Message { get; set; }
public List<string> Errors { get; set; }
public T Data { get; set; }
}
不知道怎么弄,求大神帮忙?
解决方案
您不希望response
参数完全通用 - 您希望它只是一种Response<>
类型。
public class NullUnauthorizedPropsBehaviour<TRequest, TResponse> :
IRequestPostProcessor<TRequest, TResponse>
{
public Task Process(TRequest request, Response<TResponse> response,
CancellationToken cancellationToken)
}
这里的关键是将response
参数类型从更改TResponse
为Response<TResponse>
。
现在TResponse
表示Response
类的数据,而不是整个响应对象。
方法中的response
对象(参数)现在可以访问Response
级别成员,like.Succeeded
等等。
推荐阅读
- flutter - 当子部件更改 Flutter 时更改父变量并重建父部件
- yocto - 覆盖 `DEFAULTTUNE` 和其他机器配置参数
- java - Spring boot RestHighLevelClient 弹性搜索组合查询
- java - Java:trustAnchors 参数必须为非空(openjdk)
- javascript - 在 JavaScript 按钮上应用某些 .class 并避免文本错位
- node.js - 尝试安装最新版本的 npm 时出现错误 EEXIST
- javascript - 无法使我的 Javascript 代码工作以禁用加载页面上的输入框
- css - 管理面板的 Wordpress 样式
- javascript - 在 Javascript 和 nodejs 中使用从同一 module.exports 调用其他函数的异步函数
- node.js - DynamoDB AWS 没有取回任何数据,也没有错误