本文整理汇总了C#中ICSharpCode.NRefactory.Ast.MethodDeclaration.DeepCopy方法的典型用法代码示例。如果您正苦于以下问题:C# MethodDeclaration.DeepCopy方法的具体用法?C# MethodDeclaration.DeepCopy怎么用?C# MethodDeclaration.DeepCopy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ICSharpCode.NRefactory.Ast.MethodDeclaration
的用法示例。
在下文中一共展示了MethodDeclaration.DeepCopy方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FindCandidatesViaRefactoringPermutations
public IEnumerable<MethodDeclaration> FindCandidatesViaRefactoringPermutations(TargetInfo left, MethodDeclaration right)
{
right = right.DeepCopy();
/*
* Steps to change one to match the other.
* Get the lookup table for left.
* Get the lookup table for right.
* Loop through left, renaming the corresponding right var as you go (don't worry about collisions yet).
* Compare.
*
* This is essentially a normalization of one to the other.
*/
Dictionary<string, List<LocalLookupVariable>> left_table = left.GetLookupTableWithParams();
Dictionary<string, List<LocalLookupVariable>> right_table = right.GetLookupTableWithParams();
if (left_table.Keys.Count == right_table.Keys.Count)
{
IDictionary<string, string> renames = new Dictionary<string, string>();
for (int i = 0; i < left_table.Count; i++)
{
var left_var_name = left_table.Keys.ToArray()[i];
var right_var_name = right_table.Keys.ToArray()[i];
// current name => new name
renames.Add(right_var_name, left_var_name);
}
RenameLocalVariableRefactoring r = new RenameLocalVariableRefactoring(renames);
right.AcceptVisitor(r, null);
yield return right;
}
}
示例2: MakePermutation
private MethodDeclaration MakePermutation(MethodDeclaration right, IEnumerable<PrimExpSet> prim_groups)
{
ResetNameCount();
right = right.DeepCopy();
var rights_primitives = right.AllPrimitiveExpressions();
foreach (var prim_grp in prim_groups)
{
var param_name = NextName();
var typeRef = new TypeReference(prim_grp.ValueType.FullName);
right.Parameters.Add(new ParameterDeclarationExpression(typeRef, param_name));
var replacer = new PrimitiveReplacer();
foreach (var pos in prim_grp.Positions)
{
replacer.AddReplacement(rights_primitives[pos], new IdentifierExpression(param_name));
}
right.AcceptVisitor(replacer, null);
}
return right;
}