Search code examples
c#linqextension-methodscode-analysisfxcop

Visual Studio Code Analysis Rule - "Do not expose generic lists"


Do not expose generic lists

IF all my methods, need to expose a collection, then I need to user the Linq Extension .ToList(), almost everywhere I need to use lists, or user Collections in all my code.

If that’s the case, .ToList() is ignoring the rule right? Or is there a technique like copying the list o something to fix the violation and still return a list?


Solution

  • I disable that rule because I don't feel like it's a valid one. If you want to return a collection which contains an O(1) count and is not a direct reference to an internal field, List<T> is the best choice.

    I don't deeply understand your case here but it sounds like you have a method which returns a LINQ query over some internal data. If that's the case then using a .ToList() on the data is appropriate since you likely don't want future modifications of your internal fields to affect the return value of a method. In that case, there is no reason to not expose it as a List<T>.