替代嵌套类型 Expression<Func<T>>
- 作者: 稍等缓冲中
- 来源: 51数据库
- 2022-10-28
问题描述
我在调用服务时使用了一个函数.在调用服务之前,它会创建一个日志条目:
I have a function used when calling a service. Before it call the service, it will create a log entry:
protected TResult CallService<TService, TResult>(TService service,
Expression<Func<TService, TResult>> functionSelector)
{
Logger.LogServiceCall(service, functionSelector);
return functionSelector.Compile()(service);
}
Visual Studio 2010 代码分析器在以下消息中通知我不应使用嵌套类型:
The Visual Studio 2010 Code Analyzer informs me that I shouldn't use Nested Type in the following message:
CA1006:Microsoft.Design:考虑一个设计在哪里'ServiceManager.CallService
CA1006 : Microsoft.Design : Consider a design where 'ServiceManager.CallService<TService, Result>(TService, Expression<Func<TService, TResult>>)' doesn't nest generic type 'Expression<Func<TService, TResult>>'.
虽然我可以简单地为该条目创建一个禁止规则,但是否存在可以阻止显示此类警告的替代方法?
While I could simply create a suppression rule for this entry, is there is an alternative that exist that would prevent displaying such warning?
推荐答案
在这种情况下我会抑制它,原因是调用者不必处理嵌套泛型,他只是传递一个 lambda 表达式,它易于使用.
I would suppress it in this case, with the reason that the caller doesn't have to cope with nested generics, he is just passing a lambda expression, which is easy to use.
CA 不会为 lambda 表达式设置例外.有时最好是抑制它然后编写奇怪的代码.
CA does not make exceptions for lambda expressions. Sometimes It is better to suppress it then to write weird code.
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
