The FxCop says in a rule that generic List should not be exposed to the outside world.
But I do not understand why and what is the replacement for the generice List?
Reference : http://msdn.microsoft.com/en-in/library/ms182142%28en-us%29.aspx
The FxCop says in a rule that generic List should not be exposed to the outside world.
But I do not understand why and what is the replacement for the generice List?
Reference : http://msdn.microsoft.com/en-in/library/ms182142%28en-us%29.aspx
Always expose the lowest base class/interface in the object hierarchy that will be suitable for your scenario. For example if consumers of this property are going to only iterate over it use IEnumerable(Of T). By exposing a List<T> you are breaking encapsulation by giving client code access to an implementation detail of your class.
A generic list is a .NET construct, however web services are often intended to be interoperable with other frameworks.
The reason is that the use of a concrete List<T> is meant to be an implementation detail, and you're meant to expose something more abstract, such as IEnumerable<T> or ICollection<T>, that represents only the functionality you want to expose (such as being enumerable, mutable and/or indexable). This gives you flexibility to change the implementation later on.
In practice, this warning is often resolved by returning IList<T> instead of List<T>, but the idea is to prompt you to think about "what functionality do I actually need to guarantee my callers?" E.g. maybe I should be returning IEnumerable<T> or ReadOnlyCollection<T> because I don't want my callers messing with the returned collection.