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