我需要通过编写实现IUserType
的新映射器类为custom type创建NHibernate。虽然覆盖大多数方法和属性相对简单,但我理解如何正确处理以下成员会遇到一些困难:
object Assemble(object cached, object owner);
object DeepCopy(object value);
object Disassemble(object value);
object Replace(object original, object target, object owner);
我不明白他们的目的是什么;更重要的是,如何正确实施它们。我见过的大多数示例都只返回原始输入参数。
public object DeepCopy(object value)
{
return value;
}
public object Replace(object original, object target, object owner)
{
return original;
}
public object Assemble(object cached, object owner)
{
return cached;
}
public object Disassemble(object value)
{
return value;
}
如何在实际情况或更复杂的情况下正确实施这些方法?
答案 0 :(得分:11)
看看Ritesh Rao如何在他的NCommon框架中做到这一点:
MoneyUserType实现了一个名为CompositeUserTypeBase
的基类评论中有更多细节,但总结一下:
答案 1 :(得分:5)
您可能需要查看此article。这是如何实现IUserType接口的一个很好的例子。