I have a scenerio where have an abstract base class PaymentBase (example). There are different implementations, (i.e. CreditCardPayment, WireTransferPayment, etc) that are
joined-subclasses. This works OK, but we also have a second PaymentPreferenceBase abstract class which has duplicate 1-to-1 subclasses as the previous PaymentBase.
I was hoping to avoid this irritating duplication, but providing an IPaymentPreference interface that such that preference classes would inherit their corresponding PaymentBase and the IPaymentPreference interface. Problem is I don't know how to map the IPaymentPreference?
Here's what we have now as far as mapping to hopefully make it a bit more clear:
Code:
<class name="Blah.Model.Membership.Preferences.PaymentPreference, Blah.Model" table="PaymentPreference" lazy="false">
<id ... />
<property name="NickName" type="String" not-null="true" />
<!-- Classes which implement PaymentPreference are mapped below: -->
<joined-subclass name="Blah.Model.Membership.Preferences.CreditCardPreference, Blah.Model" table="CreditCardPreference" lazy="false">
...
</joined-subclass>
<joined-subclass name="Blah.Model.Membership.Preferences.eCheckPreference, Blah.Model" table="eCheckPreference" lazy="false">
...
</joined-subclass>
</class>
Code:
<class name="Blah.Model.OrderManagement.CustomerOrderPayment, Blah.Model" table="CustomerOrderPayment" lazy="false">
<id ... />
<joined-subclass name="Blah.Model.OrderManagement.CreditCardPayment, Blah.Model" table="CreditCardPayment" lazy="false">
...
</joined-subclass>
<joined-subclass name="Blah.Model.OrderManagement.eCheckPayment, Blah.Model" table="eCheckPayment" lazy="false">
...
</joined-subclass>
The duplication issue, obviously, arises, because CreditCardPreference cannot inherit from both CreditCardPayment
and PaymentPreference. Anyone have any ideas?