FastDeepCloner CloneLevel FirstLevelOnly = Only InternalTypes Hierarki = All types Hierarki All types Only InternalTypes globa ConfigrationManager, for managing the library settings DeepCloner Clear cached data DeepClone object Desire object to cloned DeepClone object Desire object to cloned Clone Method DeepClone object Desire object to cloned Clone Method DeepClone dynamic(AnonymousType) object Desire AnonymousType object Create CreateInstance() this will use ILGenerator to create new object from the cached ILGenerator This is alot faster then using Activator or GetUninitializedObject. TThe library will be using ILGenerator or Expression depending on the platform and then cach both the contructorinfo and the type, so it can be reused later on Optional Create CreateInstance() this will use ILGenerator to create new object from the cached ILGenerator This is alot faster then using Activator or GetUninitializedObject. The library will be using ILGenerator or Expression depending on the platform and then cach both the contructorinfo and the type, so it can be reused later on Optional Get the internal item type of the List or ObservableCollection types will return the same value if the type is not an list type will return fieldInfo from the cached fieldinfo. Get and set value is much faster. will return propertyInfo from the cached propertyInfo. Get and set value is much faster. Get field by Name Get Property by name This will handle only internal types and noneinternal type must be of the same type to be cloned Convert Value from Type to Type when fail a default value will be loaded. can handle all known types like datetime, time span, string, long etc ex "1115rd" to int? will return null "152" to int? 152 Convert Value from Type to Type when fail a default value will be loaded. can handle all known types like datetime, time span, string, long etc ex "1115rd" to int? will return null "152" to int? 152 eg typeof(int?) Get DefaultValue by type FastDeepCloner Extensions Override create instance default is emit Determines if the specified type is an internal type. true if type is internal, else false. Validate if type is AnonymousType This is the very basic validation Determines if the specified type is a Class type. true if type is internal, else false. This attribute is used be CloneTo Method Add this attribute to map property from one class to another class ColumnName map property from one class to another class Ignore Properties or Field that containe this attribute Incase you have circular references in some object You could mark an identifier or a primary key property so that fastDeepcloner could identify them FastDeepClonerSettings Field type Clone Level override Activator CreateInstance and use your own method Constructor PropertyField for property FielInfo for property Interface for FastDeepClonerProperty Get Method for GetValue() Set Method for SetValue() PropertyName Property FullName Set Value Get Value CanRead= !(field.IsInitOnly || field.FieldType == typeof(IntPtr) || field.IsLiteral); or for PropertyInfo CanRead= !(!property.CanWrite || !property.CanRead || property.PropertyType == typeof(IntPtr) || property.GetIndexParameters().Length > 0); If you could write to the propertyInfo Simple can read. this should have been called CanRead to bad we alread have CanRead Property, its a pain to change it now. Ignored Incase you have circular references in some object You could mark an identifier or a primary key property so that fastDeepcloner could identify them Apply this to properties that cant be cloned, eg ImageSource and other controls. Those property will still be copied insted of cloning All available attributes Type IsVirtual Is a reference type eg not GetTypeInfo().IsClass Get a collection of attributes Get a collection of attributes Validate if attribute exist Validate if attribute type exist Get first found attribute Get first found attribute type Exist only for PropertyInfo Exist only for PropertyInfo Using this method will trigger ConfigrationManager.OnAttributeCollectionChanged Apply this to properties that cant be cloned, eg ImageSource and other controls. Those property will still be copied insted of cloning CustomValueType Dictionary