为不可变类型实现ICompositeUserType

时间:2013-06-03 11:37:16

标签: c# nhibernate

我有一个不可变的Money类型(ammount和货币),我正在复制一个我看到here的例子。

他们像这样实现深层拷贝:

public object DeepCopy(object value)
{
    return new Money(((Money) value).Amount, ((Money) value).Currency);
}

对于不可变的,这是毫无意义和低效的。但由于我不知道NHibernate libs里面的内容,我想知道它是否是nessasary,如果这样做是安全的:

public object DeepCopy(object value)
{
    return value;
}

我可以预见的唯一区别是,如果在NHibernate的某处,他们依靠object的{​​{1}}运算符返回!=。但那会很糟糕,所以我怀疑这种情况还在继续,但我想确认一下。

此外,请注意我的资金为true,而不是class

1 个答案:

答案 0 :(得分:1)

DeepCopy有一个变更跟踪副本,这对于不可变类型来说毫无意义,因此您的实现对于所有不可变类型都是典型的

public bool IsMutable
{
    get { return false; }
}

public object DeepCopy(object value)
{
    return value;
}