I am new to interfaces but I'm trying to force myself learn how to use them. I am confused on how to go about selecting a list of objects that implement an interface. This is the gist what I have so far:

```
public class Planet 
{
    public ICollection<Structure> Structures {get;set;}
    public ICollection<Ship> Ships {get;set;}
    public int GatherRate {get;set}
    public void GetAllResourceGatherers
    {
        var resourceGatherers = Planet.Ships.OfType<IResourceGatherer>()
                                                .ToList();

        //the below line doesn't work. I want to be able to get a list of all 
        //ships and structures that implement IResourceGatherer.    
        resourceStorers.AddRange(Structures.OfType<IResourceGatherer>()
                                               .ToList());

        foreach (var gatherer in resourceGatherers)
        {
            GatherRate += gatherer.GatherRate;
        }
    }
}
public class Ship
{
    //Stuff that all ships should have such as health, speed, cost, etc
}
public class Structure
{
    //Stuff that all structures should have such as buildtime, cost, etc
}
public class ResourceStructure : Structure, IResourceGatherer
{
    //implement interface
}
public class ResourceShip : Ship, IResourceGatherer
{
    //implement interface
}
interface IResourceGatherer
{
    int GatherRate{get;set;}
}

```

Is there a better way to do this?

P.S. I'm using Entity Framework 6 and MVC 4 on this project.