Modify Insert for general use



Hello,在编写此插入到MongoDB时,使用以下代码使用名为Game的类完成。

var games = database.GetCollection<Game>("Games"); 
Game newGame = new Game() 
{
Name = "Monopoly",
Price = 22, 
Category = "Board Game" 
}; 
games.InsertOne(newGame);

我正在尝试创建一个函数,将这些作为参数:

void insert(Game game, string collection)
{
var games = database.GetCollection<Game>(collection);
games.InsertOne(game);
}
// use would be like
Game game=new Game();
//...properties etc
test(game,"Games");

但是我想把这个函数用作通用的插入函数:

MyClass1 c1=new MyClass1();
//...properties etc
insert(c1, "MyClass1");
MyClass2 c2=new MyClass2();
//...properties etc
insert(c2,"MyClass2");

我应该如何修改插入方法,使它接受任何给定的类,并插入到给定的MongoDB集合?

void insert(object obj, string collection)
{
//...code to get obj's class?
var mongoObject = database.GetCollection<obj_class>(collection);
mongoObject.InsertOne(game);
}

您可以修改Insert方法以支持泛型类型,如下所示:

void Insert<T>(T obj, string collectionName) where T : new()
{
var collection = database.GetCollection<T>(collectionName);
collection.InsertOne(obj);
}

最新更新