我有一个不可变的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
。
答案 0 :(得分:1)
DeepCopy有一个变更跟踪副本,这对于不可变类型来说毫无意义,因此您的实现对于所有不可变类型都是典型的
public bool IsMutable
{
get { return false; }
}
public object DeepCopy(object value)
{
return value;
}