/// <summary> /// Create an exact copy of the given tree node but replace all leaf values of type T1 by values /// of type T2 using the given cast function /// </summary> /// <typeparam name="T1"></typeparam> /// <typeparam name="T2"></typeparam> /// <param name="treeNode"></param> /// <param name="castFunc"></param> /// <returns></returns> public static SimpleTreeBranchDictionaryByName <T2> Cast <T1, T2>(this SimpleTreeBranchDictionaryByName <T1> treeNode, Func <T1, T2> castFunc) { var newTreeNode = new SimpleTreeBranchDictionaryByName <T2>(); foreach (var pair in treeNode) { newTreeNode.Add(pair.Key, Cast(pair.Value, castFunc)); } return(newTreeNode); }
/// <summary> /// Create an exact copy of the given tree node but replace all leaf values of type T1 by values /// of type string using the ToString() method /// </summary> /// <typeparam name="T1"></typeparam> /// <param name="treeNode"></param> /// <returns></returns> public static SimpleTreeBranchDictionaryByName <string> ToStringTree <T1>(this SimpleTreeBranchDictionaryByName <T1> treeNode) { var newTreeNode = new SimpleTreeBranchDictionaryByName <string>(); foreach (var pair in treeNode) { newTreeNode.Add(pair.Key, ToStringTree(pair.Value)); } return(newTreeNode); }
/// <summary> /// Create an exact copy of the given tree node but replace all leaf values of type T1 by values /// of type T2 using the as operator /// </summary> /// <typeparam name="T1"></typeparam> /// <typeparam name="T2"></typeparam> /// <param name="treeNode"></param> /// <returns></returns> public static SimpleTreeBranchDictionaryByName <T2> Cast <T1, T2>(this SimpleTreeBranchDictionaryByName <T1> treeNode) where T1 : class where T2 : class { var newTreeNode = new SimpleTreeBranchDictionaryByName <T2>(); foreach (var pair in treeNode) { newTreeNode.Add(pair.Key, Cast <T1, T2>(pair.Value)); } return(newTreeNode); }