c# - Refactor a method that it can handle multiple types? -


i have following class:

public class disciplines {     public int id { get; set; }     public string discipline { get; set; }     public bool ischecked { get; set; } } 

my project has several view models use class create checkbox group in form of:

public list<disciplines> disciplinescbg { get; set; } 

i'm saving checkbox selections database comma separated string, , splitting string on comma re display checkboxes:

public static userprofileviewmodel disciplinesstringtocheckboxgroup(userprofileviewmodel model) {     string[] disciplinearray = model.disciplines.split(',');     (int = 0; < model.disciplinescbg.count; i++)     {         string currentvalue = model.disciplinescbg[i].discipline;         if(array.indexof(disciplinearray, currentvalue) > -1)         {             model.disciplinescbg[i].ischecked = true;         }     }     return model; } 

my question is, how can write method usable other viewmodel types in addition userprofileviewmodel? example have view model called registerviewmodel uses same public list<disciplines> disciplinescbg { get; set; } able use same method above without having copying , change signature. i'm assuming possible?

you can create interface has disciplines , disciplinescbg property , implement in each classes want apply.

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(',');     (int = 0; < model.disciplinescbg.count; i++)     {         string currentvalue = model.disciplinescbg[i].discipline;         if(array.indexof(disciplinearray, currentvalue) > -1)         {             model.disciplinescbg[i].ischecked = true;         }     }     return model; } 

Comments