Fixed a bug in the cloners: if a class has properties with only a setter or only a getter, the property-based clones now ignore that property; added a unit test that verifies types without a default constructor can be cloned as well
git-svn-id: file:///srv/devel/repo-conversion/nusu@248 d2e56fa2-650e-0410-a79f-9358c0239efd
This commit is contained in:
parent
48e1674912
commit
0290444140
7 changed files with 200 additions and 108 deletions
|
|
@ -78,6 +78,14 @@ namespace Nuclex.Support.Cloning {
|
|||
public TestReferenceType[,][] ReferenceTypeArrayField;
|
||||
/// <summary>An array property of reference types</summary>
|
||||
public TestReferenceType[,][] ReferenceTypeArrayProperty { get; set; }
|
||||
/// <summary>A reference type field that's always null</summary>
|
||||
public TestReferenceType AlwaysNullField;
|
||||
/// <summary>A reference type property that's always null</summary>
|
||||
public TestReferenceType AlwaysNullProperty { get; set; }
|
||||
/// <summary>A property that only has a getter</summary>
|
||||
public TestReferenceType GetOnlyProperty { get { return null; } }
|
||||
/// <summary>A property that only has a s</summary>
|
||||
public TestReferenceType SetOnlyProperty { set { } }
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -104,11 +112,44 @@ namespace Nuclex.Support.Cloning {
|
|||
public TestReferenceType[,][] ReferenceTypeArrayField;
|
||||
/// <summary>An array property of reference types</summary>
|
||||
public TestReferenceType[,][] ReferenceTypeArrayProperty { get; set; }
|
||||
/// <summary>A reference type field that's always null</summary>
|
||||
public TestReferenceType AlwaysNullField;
|
||||
/// <summary>A reference type property that's always null</summary>
|
||||
public TestReferenceType AlwaysNullProperty { get; set; }
|
||||
/// <summary>A property that only has a getter</summary>
|
||||
public TestReferenceType GetOnlyProperty { get { return null; } }
|
||||
/// <summary>A property that only has a s</summary>
|
||||
public TestReferenceType SetOnlyProperty { set { } }
|
||||
|
||||
}
|
||||
|
||||
#endregion // struct HierarchicalReferenceType
|
||||
|
||||
#region class ClassWithoutDefaultConstructor
|
||||
|
||||
/// <summary>A class that does not have a default constructor</summary>
|
||||
public class ClassWithoutDefaultConstructor {
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the class without default constructor
|
||||
/// </summary>
|
||||
/// <param name="dummy">Dummy value that will be saved by the instance</param>
|
||||
public ClassWithoutDefaultConstructor(int dummy) {
|
||||
this.dummy = dummy;
|
||||
}
|
||||
|
||||
/// <summary>Dummy value that has been saved by the instance</summary>
|
||||
public int Dummy {
|
||||
get { return this.dummy; }
|
||||
}
|
||||
|
||||
/// <summary>Dummy value that has been saved by the instance</summary>
|
||||
private int dummy;
|
||||
|
||||
}
|
||||
|
||||
#endregion // class ClassWithoutDefaultConstructor
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that a cloned object exhibits the expected state for the type of
|
||||
/// clone that has been performed
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue