यहां एक नमूना है कि मैंने इसे थोड़ी देर पहले कैसे कार्यान्वित किया, हालांकि इसे परिदृश्य के अनुरूप बनाया जाना चाहिए। इस मामले में हमारे पास एक बुरा ऑब्जेक्ट श्रृंखला थी जो आसानी से बदल सकती थी और क्लोन का उपयोग बहुत ही महत्वपूर्ण प्रोटोटाइप कार्यान्वयन के रूप में किया जाता था और इसलिए मुझे इस परीक्षण को पैच (हैक) करना था।
public static class TestDeepClone
{
private static readonly List objectIDs = new List();
private static readonly ObjectIDGenerator objectIdGenerator = new ObjectIDGenerator();
public static bool DefaultCloneExclusionsCheck(Object obj)
{
return
obj is ValueType ||
obj is string ||
obj is Delegate ||
obj is IEnumerable;
}
///
/// Executes various assertions to ensure the validity of a deep copy for any object including its compositions
///
/// The original object
/// The cloned object
/// A predicate for any exclusions to be done, i.e not to expect IPolicy items to be cloned
public static void AssertDeepClone(this Object original, Object copy, Predicate