Skip to content

Commit ffa35ca

Browse files
committed
added iteration over all implementations of IAutoMappingOverride - so far all existing tests pass
1 parent 63593b5 commit ffa35ca

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

src/FluentNHibernate/Automapping/AutoPersistenceModel.cs

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -360,27 +360,28 @@ static bool IsAutomappingForType(object o, Type entityType)
360360
/// <param name="overrideType">Override type, expected to be an IAutoMappingOverride</param>
361361
public void Override(Type overrideType)
362362
{
363-
var overrideInterface = overrideType.GetInterfaces().FirstOrDefault(x => x.IsAutoMappingOverrideType());
363+
var overrideInterfaces = overrideType.GetInterfaces().Where(x => x.IsAutoMappingOverrideType()).ToList();
364364

365-
if (overrideInterface == null) return;
366-
367-
var entityType = overrideInterface.GetGenericArguments().First();
368-
369-
AddOverride(entityType, instance =>
365+
foreach (var overrideInterface in overrideInterfaces)
370366
{
371-
if (!IsAutomappingForType(instance, entityType)) return;
367+
var entityType = overrideInterface.GetGenericArguments().First();
368+
369+
AddOverride(entityType, instance =>
370+
{
371+
if (!IsAutomappingForType(instance, entityType)) return;
372372

373-
var overrideInstance = Activator.CreateInstance(overrideType);
373+
var overrideInstance = Activator.CreateInstance(overrideType);
374374

375-
MethodInfo overrideHelperMethod = typeof(AutoPersistenceModel)
376-
.GetMethod("OverrideHelper", BindingFlags.NonPublic | BindingFlags.Instance);
375+
MethodInfo overrideHelperMethod = typeof(AutoPersistenceModel)
376+
.GetMethod("OverrideHelper", BindingFlags.NonPublic | BindingFlags.Instance);
377377

378-
if (overrideHelperMethod == null) return;
378+
if (overrideHelperMethod == null) return;
379379

380-
overrideHelperMethod
381-
.MakeGenericMethod(entityType)
382-
.Invoke(this, new[] {instance, overrideInstance});
383-
});
380+
overrideHelperMethod
381+
.MakeGenericMethod(entityType)
382+
.Invoke(this, new[] { instance, overrideInstance });
383+
});
384+
}
384385
}
385386

386387
//called reflectively from method above

0 commit comments

Comments
 (0)