Menemukannya! Saya memanggil GetCollection() dari dalam metode generik lain, seperti ini:
public T Save<T>(T item) where T : class, IRepoData, new()
{
GetCollection<T>().Save(item);
}
Ini menyebabkan GetCollection melihat T sebagai antarmuka alih-alih kelas instance sebenarnya. GetCollection berfungsi dengan baik di tempat lain.
Untuk orang lain dengan masalah ini, saya hanya menggunakan kueri tingkat rendah seperti ini sebagai gantinya... Collection.FindOneAs<T>(Query.EQ("Id", itemID.ToString()));