0

我有一个不可变的 Money 类型(金额和货币),我正在复制我在此处看到的示例。

他们像这样实现深拷贝:

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

这对于不可变对象来说毫无意义且效率低下。但由于我不了解 NHibernate 库,我想知道它是否必要,以及这样做是否安全:

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

我能预见的唯一区别是,如果在 NHibernate 的某个地方,他们依赖于返回object的操作员。但这会很糟糕,所以我怀疑这种情况正在发生,但我想确认一下。!=true

另外,请注意我的钱是 a class,而不是 a struct

4

1 回答 1

1

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

public bool IsMutable
{
    get { return false; }
}

public object DeepCopy(object value)
{
    return value;
}
于 2013-06-06T08:16:34.467 回答