Našel jsem to! Volal jsem GetCollection() z jiné obecné metody, jako je tato:
public T Save<T>(T item) where T : class, IRepoData, new()
{
GetCollection<T>().Save(item);
}
To způsobilo, že GetCollection viděl T jako rozhraní namísto skutečné třídy instance. GetCollection funguje dobře kdekoli jinde.
Pro kohokoli jiného s tímto problémem jsem místo toho použil dotaz na nízké úrovni, jako je tento... Collection.FindOneAs<T>(Query.EQ("Id", itemID.ToString()));