Как автоматизировать отображение коллекции компонентов с помощью Fluent NHibernate?

Все мои сущности и объекты значений реализуют интерфейсы маркеров IEntity и IValueObject . Я настроил их так, чтобы они обрабатывались как компоненты следующим образом:

public override bool IsComponent(Type type)
{
    return typeof(IValueObject).IsAssignableFrom(type);
}

public override bool ShouldMap(Type type)
{
    return typeof(IEntity).IsAssignableFrom(type) || typeof(IValueObject).IsAssignableFrom(type);
}

К сожалению, похоже, это не позволяет автоматически отображать сущности, которые имеют коллекции объектов значений, как коллекции компонентов. Например:

public class MyEntity : IEntity
{
    public IList<MyValueObject> Objects { get; set; }
}

public class MyValueObject : IValueObject
{
    public string Name { get; set; }
    public string Value { get; set; }
}

Есть ли способ определить такое соглашение, чтобы каждый раз, когда объект IEntity имел IList типа, реализующего IValueObject , он отображается так, как если бы я указал:

HasMany(x => x.Objects)
    .Component(x => { 
        x.Map(m => m.Name); 
        x.Map(m => m.Value); 
    });

Чего я не хочу делать, так это вручную выполнять эти переопределения для каждого класса и снова и снова записывать каждое свойство для объекта значения.

6
задан Joran 26 January 2011 в 22:23
поделиться