MongoDB动态注册类类型

Tob*_*ler 2 mongodb c#-4.0

在MongoDB中我需要动态注册类映射,我不需要自己注册所有当前和未来类.

有一个叫做的方法

BsonClassMap.RegisterClassMap<T> 
Run Code Online (Sandbox Code Playgroud)

但有了这个,我需要知道Class(T),而不能使用Type.

我想迭代这样的程序集类型来注册类映射:

var assemblyTypes = AppDomain.CurrentDomain.GetAssemblies().SelectMany(t => t.GetTypes()).Where(t => t.IsClass);
        foreach (var type in assemblyTypes)
        {
            //Register classmap for type
        }
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

Tob*_*ler 7

我终于找到了解决这个问题的方法.适合所有遇到同样问题的人.

我检查了mongodb-c#-driver-source以查明是否有另一种方法可以动态注册类型.

方法

BsonClassMap.LookupClassMap(type);
Run Code Online (Sandbox Code Playgroud)

将检查提供的类型是否已经注册.如果没有,它会注册它并调用AutoMap().

并确保该类未在其他地方注册,您应该像这样使用它:

if (BsonClassMap.IsClassMapRegistered(type))
  return;

//will check if the type is registered. if not it will be automatically registered.
//AutoMap will also called automatically.
BsonClassMap.LookupClassMap(type);
Run Code Online (Sandbox Code Playgroud)