== Why is this an issue?

The NET Framework 2.0 introduced the generic interface ``++System.Collections.Generic.IEnumerable<T>++`` and it should be preferred over the older, non generic, interfaces.


This rule raises an issue when a public type implements ``++System.Collections.IEnumerable++``.


=== Noncompliant code example

[source,csharp]
----
using System;
using System.Collections;

public class MyData
{
  public MyData()
  {
  }
}

public class MyList : CollectionBase // Noncompliant
{
  public void Add(MyData data)
  {
    InnerList.Add(data);
  }

  // ...
}
----


=== Compliant solution

[source,csharp]
----
using System;
using System.Collections.ObjectModel;

public class MyData
{
  public MyData()
  {
  }
}

public class MyList : Collection<MyData>
{
  // Implementation...
}
----


ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

=== Message

Refactor this collection to implement [IEnumerable<T>|ICollection<T>|IList<T>]


=== Highlighting

Class declaration


endif::env-github,rspecator-view[]
