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);
}
The Visual Studio 2010 Code Analyzer informs me that I shouldn’t use Nested Type in the following message:
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?
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 does not make exceptions for lambda expressions. Sometimes It is better to suppress it then to write weird code.