c# - 重构一个可以处理多种类型的方法?

标签 c# asp.net

我有以下类(class):

public class Disciplines
{
    public int Id { get; set; }
    public string Discipline { get; set; }
    public bool IsChecked { get; set; }
}

我的项目有几个 View 模型使用该类以以下形式创建复选框组:

public List<Disciplines> DisciplinesCBG { get; set; }

我将复选框选择作为逗号分隔的字符串保存到数据库中,然后拆分逗号上的字符串以重新显示为复选框:

public static UserProfileViewModel DisciplinesStringToCheckboxGroup(UserProfileViewModel model)
{
    string[] disciplineArray = model.Disciplines.Split(',');
    for (int i = 0; i < model.DisciplinesCBG.Count; i++)
    {
        string currentValue = model.DisciplinesCBG[i].Discipline;
        if(Array.IndexOf(disciplineArray, currentValue) > -1)
        {
            model.DisciplinesCBG[i].IsChecked = true;
        }
    }
    return model;
}

我的问题是,除了 UserProfileViewModel 之外,我如何编写可用于其他 ViewModel 类型的方法? ?例如我有一个名为 RegisterViewModel 的 View 模型使用相同的 public List<Disciplines> DisciplinesCBG { get; set; }我希望能够使用与上面相同的方法,而不必只复制它并更改签名。我假设这是可能的?

最佳答案

您可以创建一个具有 DisciplinesDisciplinesCBG 属性的接口(interface),然后在您要应用的每个类中实现它。

interface IHasDiciplines
{
    string Disciplines { get; set; }
    List<Disciplines> DisciplinesCBG { get; set; }
}

class UserProfileViewModel : IHasDiciplines
{
    public string Disciplines { get; set; }
    public List<Disciplines> DisciplinesCBG { get; set; }
}

public static IHasDiciplines DisciplinesStringToCheckboxGroup(IHasDiciplines  model)
{
    string[] disciplineArray = model.Disciplines.Split(',');
    for (int i = 0; i < model.DisciplinesCBG.Count; i++)
    {
        string currentValue = model.DisciplinesCBG[i].Discipline;
        if(Array.IndexOf(disciplineArray, currentValue) > -1)
        {
            model.DisciplinesCBG[i].IsChecked = true;
        }
    }
    return model;
}

关于c# - 重构一个可以处理多种类型的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40539466/

相关文章:

c# - json 文件反序列化为 poco 对象不起作用

c# - 如何将 Asp.net 控件名称与字符串连接起来

c# - 在 ASP.NET (MVC) 中从 CSV/Excel 导入期间标准化数据的推荐方法是什么?

c# - 从嵌套在 Json 响应中的数组中反序列化对象

c# - 在 C# 中读取 shapefile 坐标

asp.net - asp.net http服务器推送到客户端

c# - String.Format 为阿拉伯文本抛出 'Input string was not in a correct format'

javascript - 帮助!调查模态 TXT 包括不工作

c# - 创建一个在列表更新时触发的事件

c# - 在将数据转换为直方图之前如何 reshape 数据?