Beispiel #1
0
        public T GetValue <T>(bool isDeepClone = true)
        {
            object val = Value;

            var t = typeof(T);

            if (t == TypeHelper.BoolType || t == TypeHelper.StringType || t == TypeHelper.CharType || t == TypeHelper.DateTimeType)
            {
                return((T)Convert.ChangeType(val, t));
            }

            if (t == TypeHelper.NullableBoolType || t == TypeHelper.NullableCharType || t == TypeHelper.NullableDateTimeType)
            {
                return(val == null ? default(T) : (T)Convert.ChangeType(val, Nullable.GetUnderlyingType(t)));
            }

            return(DeepClonerGenerator.CloneObject <T>((T)val));
        }
 /// <summary>
 /// Performs shallow copy of object to existing object
 /// </summary>
 /// <returns>existing filled object</returns>
 /// <remarks>Method is valid only for classes, classes should be descendants in reality, not in declaration</remarks>
 public static TTo ShallowCloneTo <TFrom, TTo>(this TFrom objFrom, TTo objTo) where TTo : class, TFrom
 {
     return((TTo)DeepClonerGenerator.CloneObjectTo(objFrom, objTo, false));
 }
 /// <summary>
 /// Performs deep (full) copy of object and related graph
 /// </summary>
 public static T DeepClone <T>(this T obj)
 {
     return(DeepClonerGenerator.CloneObject(obj));
 }
 public static T DeepClone <T>(this T original)
 {
     return(DeepClonerGenerator.CloneObject(original));
 }
Beispiel #5
0
 public static TTo DeepCloneTo <TFrom, TTo>(this TFrom objFrom, TTo objTo) where TTo : class, TFrom
 {
     return((TTo)DeepClonerGenerator.CloneObjectTo(objFrom, objTo, isDeep: true));
 }