Fundet det! Jeg kaldte GetCollection() fra en anden generisk metode, som denne:
public T Save<T>(T item) where T : class, IRepoData, new()
{
GetCollection<T>().Save(item);
}
Dette fik GetCollection til at se T som grænsefladen i stedet for den faktiske instansklasse. GetCollection fungerer fint alle andre steder.
For alle andre med dette problem, brugte jeg bare en forespørgsel på lavt niveau som denne i stedet... Collection.FindOneAs<T>(Query.EQ("Id", itemID.ToString()));