C#学习教程:将表达式替换为嵌套类型在调用服务之前,它会创建一个日志条目:返回functionSelector.Compile()(服务);}VisualStudio2010代码分析器通知我不应在以下消息中使用嵌套类型:CA1006:Microsoft.Design:考虑一个设计,其中'ServiceManager.CallService(TService,Expression)'不嵌套泛型类型'表达式<函数>'。虽然我可以简单地为此条目创建一个抑制规则,但是否有其他方法可以防止显示此类警告?在这种情况下我会抑制它,因为调用者不必处理嵌套的泛型,他只是传递一个易于使用的lambda表达式。CA不会对lambda表达式进行例外处理。有时最好抑制它并编写奇怪的代码。老实说,我大部分时间都压制这条规则。虽然我可以理解可以避免某些嵌套类型的构造,但通常情况并非如此;您通常希望将其留给调用站点,因为您不能保证调用站点期望嵌套的泛型类型以相同的方式实例化。这是我觉得有点霸道的规则之一;我大体上同意他们中的大多数,但不同意这个。像你这样的方法在Linq中被广泛使用,例如:publicstaticIQueryableWhere(thisIQueryablesource,Expression>predicate)另一种方法是声明一个委托类型来替换嵌套的Func,但这很可能会使更有经验的开发人员感到困惑谁习惯于使用表达式树。对于嵌套的泛型表达式类型,Microsoft对CA1006做了一个明显的例外,我们也应该这样做。您可以使用SuppressMessageAttribute抑制消息警告。以上就是C#学习教程分享的全部内容:替换Expression的嵌套类型。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——文章收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: