我遇到了FxCop警告CA1006,Microsoft.Design"DoNotNestGenericTypesInMemberSignatures"的问题.具体来说,我正在设计一个ReportCollection<T>继承自的类,ReadOnlyCollection<Report<T>>其public构造函数将IList<Report<T>>一个参数作为参数.
修复此警告的建议不是很有用:
"要修复违反此规则的行为,请更改设计以删除嵌套类型参数." 到目前为止,我可以通过两种方式来改变设计:
internal.这在我的情况下不起作用.构造函数必须是public因为此集合类需要通过程序集外部的代码进行实例化.Report<T>[]而不是IList<Report<T>>.这是次优的,因为外部代码应该具有使用动态大小的数据结构的灵活性,List<T>而不是固定大小的数组.在这一点上,我放弃并压制了这个警告.有更好的解决方案吗?
我有一个调用服务时使用的函数.在调用服务之前,它将创建一个日志条目:
protected TResult CallService<TService, TResult>(TService service,
Expression<Func<TService, TResult>> functionSelector)
{
Logger.LogServiceCall(service, functionSelector);
return functionSelector.Compile()(service);
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio 2010代码分析器通知我不应在以下消息中使用嵌套类型:
CA1006:Microsoft.Design:考虑一种设计,其中'ServiceManager.CallService <TService,Result>(TService,Expression <Func <TService,TResult >>)'不嵌套泛型类型'Expression <Func <TService,TResult >>' .
虽然我可以简单地为此条目创建抑制规则,但是是否存在可以阻止显示此类警告的替代方法?