Get LiteDb Collection From CLR Type
If you use LiteDB, you might need to resolve a ILiteCollection<BsonDocument>
from a .NET type. Here's how you can do that.
public static class LiteDatabaseExtensions
{
public static ILiteCollection<BsonDocument> GetCollectionByType(this ILiteDatabase database, Type type)
{
if (database == null)
{
throw new ArgumentNullException(nameof(database));
}
if (type == null)
{
throw new ArgumentNullException(nameof(type));
}
// We can use the database's built in BsonMapper to get the default collection name for the type.
// This technique only works for collections that were resolved without custom names.
// EX: var collection = database.GetCollection<T>();
var collectionName = database.Mapper.ResolveCollectionName(type);
var collection = database.GetCollection(collectionName);
return collection;
}
}