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
Post a Comment