Все мои сущности и объекты-значения реализуют интерфейсы маркеров 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);
});
Чего я не хочу, так это вручную делать эти переопределения для каждого класса и снова и снова записывать каждое свойство для объекта значения.