Скажем, у меня есть неизменный ICompositeUserType для работы с DateRange или Money, и затем выясняется, что у меня есть другой объект-значение (т.е. неизменяемый), в котором есть значение свойства DateRange или Money. Например, Имя, которое имеет EffectivePeriod (DateRange).
DataRangeUserType инкапсулирует некоторую логику, которую я бы не хотел дублировать.
Могу ли я повторно использовать свой DataRangeUserType внутри NameUserType? Как?
Приветствия
Berryl
UPDATE
Ниже приведен краткий комментарий к ICompositeUserType, взятый из исходного кода NHibernate, который предлагает то, о чем я думаю, может быть сделано, просто не знаю, как это сделать. Следует признать, что стратегия компонентов проста и прекрасно работает, пока вы не решите использовать тот же компонент где-либо еще
/// <summary>
/// A UserType that may be dereferenced in a query.
/// This interface allows a custom type to define "properties".
/// These need not necessarily correspond to physical .NET style properties.
///
/// A ICompositeUserType may be used in almost every way
/// that a component may be used. It may even contain many-to-one
/// associations.
///
/// ...
/// </summary>
Использование сопоставления компонентов
<component name="MyCompositeComponent" class="...">
<property name="Name" not-null="true" length="50"/>
<property name="Price" type="...MoneyUserType">
<column name="Amount"/>
<column name="Currency"/>
</property>
<property name="EffectivePeriod" type="...DateRangeUserType">
<column name="EffectiveStart"/>
<column name="EffectiveEnd"/>
</property>
</component>