私のすべてのエンティティと値オブジェクトは、マーカー インターフェイス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);
});
私がやりたくないのは、これらのオーバーライドをすべてのクラスに対して手動で行い、値オブジェクトの各プロパティを何度も書き出す必要があることです。