C# 在这种情况下,如何避免重复代码?
我构建了一个javascript脚本来创建动态表单,我正在为用户创建的每个部分创建一个验证,该验证从重复的问题中更新标题。所以,我建立了一个方法。用户可以在创建包含下拉框、复选框的节之间进行选择 所以,我必须用同样的代码创建6个方法,我只是在更改列表的类型。创建泛型方法是否需要等待来防止这种情况C# 在这种情况下,如何避免重复代码?,c#,oop,C#,Oop,我构建了一个javascript脚本来创建动态表单,我正在为用户创建的每个部分创建一个验证,该验证从重复的问题中更新标题。所以,我建立了一个方法。用户可以在创建包含下拉框、复选框的节之间进行选择 所以,我必须用同样的代码创建6个方法,我只是在更改列表的类型。创建泛型方法是否需要等待来防止这种情况 private static int CheckDuplicatedDropdownQuestions(Template template, int i, List<string>
private static int CheckDuplicatedDropdownQuestions(Template template, int i, List<string> collectQuestions)
{
foreach (var field in template.Fields.Dropdown)
{
if (!collectQuestions.Contains(field.Title))
{
collectQuestions.Add(field.Title);
}
else
{
field.Title = field.Title + " (" + i + ")";
i++;
}
}
return i;
}
...
private static int CheckDuplicatedDropdownQuestions(模板模板、int i、列表问题)
{
foreach(template.Fields.Dropdown中的变量字段)
{
如果(!collectQuestions.Contains(field.Title))
{
收集问题。添加(字段。标题);
}
其他的
{
field.Title=field.Title+”(“+i+”);
i++;
}
}
返回i;
}
...
尝试为foreach零件创建新方法
private static int CheckDuplicatedDropdownQuestions(Template template, int i,
List<string> collectQuestions,string field)
{
if(field=="Dropdown")
{
NewMethod(template.Fields.Dropdown,ref i);
}
else if(field=="CheckBox")
{
NewMethod(template.Fields.CheckBox,ref i);
}
return i;
}
private static void NewMethod(var FieldType,ref int i)
{
foreach (var field in FieldType)
{
if (!collectQuestions.Contains(field.Title))
{
collectQuestions.Add(field.Title);
}
else
{
field.Title = field.Title + " (" + i + ")";
i++;
}
}
}
private static int CheckDuplicatedDropdownQuestions(模板模板,int i,
列表问题,字符串字段)
{
如果(字段==“下拉列表”)
{
NewMethod(模板.字段.下拉列表,参考i);
}
else if(字段==“复选框”)
{
NewMethod(模板.字段.复选框,参考i);
}
返回i;
}
私有静态void NewMethod(var FieldType,ref int i)
{
foreach(FieldType中的变量字段)
{
如果(!collectQuestions.Contains(field.Title))
{
收集问题。添加(字段。标题);
}
其他的
{
field.Title=field.Title+”(“+i+”);
i++;
}
}
}
你说我只是在更改列表的类型是什么意思?您要传递的列表?你怎么改变它?你能添加一个复制的方法,这样我们就可以更清楚地看到你想做什么吗?也许你可以添加另一个复制函数的示例,这样我们就可以同时看到它们了。我还没有编译它。我的想法是分享逻辑。