private void OptInMembersWithBsonCreatorMapModifierAttribute(BsonClassMap classMap)
{
// let other constructors opt-in if they have any IBsonCreatorMapAttribute attributes
foreach (var constructorInfo in classMap.ClassType.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly))
{
var hasAttribute = constructorInfo.GetCustomAttributes(typeof(IBsonCreatorMapAttribute), false).Any();
if (hasAttribute)
{
classMap.MapConstructor(constructorInfo);
}
}
// let other static factory methods opt-in if they have any IBsonCreatorMapAttribute attributes
foreach (var methodInfo in classMap.ClassType.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly))
{
var hasAttribute = methodInfo.GetCustomAttributes(typeof(IBsonCreatorMapAttribute), false).Any();
if (hasAttribute)
{
classMap.MapFactoryMethod(methodInfo);
}
}
}