MongoDB 动态注册类类型
MongoDB dynamically register class-types
在 MongoDB 我需要动态注册类映射,我不需要自己注册所有当前和未来的类。
有一个方法叫做
BsonClassMap.RegisterClassMap<T>
但是有了这个我需要知道 Class (T) 并且不能使用类型来代替。
我想像这样遍历程序集类型来注册类映射:
var assemblyTypes = AppDomain.CurrentDomain.GetAssemblies().SelectMany(t => t.GetTypes()).Where(t => t.IsClass);
foreach (var type in assemblyTypes)
{
//Register classmap for type
}
有办法吗?
我终于找到了解决这个问题的方法。仅供遇到同样问题的其他人。
我检查了 mongodb-c#-driver-source 以了解是否有另一种动态注册类型的方法。
方法
BsonClassMap.LookupClassMap(type);
将检查提供的类型是否已注册。如果不是,它将注册它并调用 AutoMap()。
并确保 class 未在其他地方注册,您应该像这样使用它:
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);
在 MongoDB 我需要动态注册类映射,我不需要自己注册所有当前和未来的类。
有一个方法叫做
BsonClassMap.RegisterClassMap<T>
但是有了这个我需要知道 Class (T) 并且不能使用类型来代替。
我想像这样遍历程序集类型来注册类映射:
var assemblyTypes = AppDomain.CurrentDomain.GetAssemblies().SelectMany(t => t.GetTypes()).Where(t => t.IsClass);
foreach (var type in assemblyTypes)
{
//Register classmap for type
}
有办法吗?
我终于找到了解决这个问题的方法。仅供遇到同样问题的其他人。
我检查了 mongodb-c#-driver-source 以了解是否有另一种动态注册类型的方法。
方法
BsonClassMap.LookupClassMap(type);
将检查提供的类型是否已注册。如果不是,它将注册它并调用 AutoMap()。
并确保 class 未在其他地方注册,您应该像这样使用它:
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);