Gevonden! Ik riep GetCollection() aan vanuit een andere generieke methode, zoals deze:
public T Save<T>(T item) where T : class, IRepoData, new()
{
GetCollection<T>().Save(item);
}
Dit zorgde ervoor dat GetCollection T zag als de interface in plaats van de daadwerkelijke instantieklasse. GetCollection werkt overal prima.
Voor iedereen met dit probleem heb ik in plaats daarvan een low-level query zoals deze gebruikt... Collection.FindOneAs<T>(Query.EQ("Id", itemID.ToString()));