我有兩節(jié)課public class ClassA{ public int ID { get; set; } public string Countries {get;set;} public string City { get;set; }}和public class ClassB{ public int ID { get; set; } public string Countries {get;set;} public string Village{ get;set; }}這兩個班級在另一個班級public class ComponentClass{ public List<ClassA> classAObj { get; set; } public List<ClassB> classBObj { get; set; }}ComponentClass的數(shù)據(jù)來自第三方,其中ClassA和ClassB的數(shù)據(jù)結(jié)構(gòu)相似。ClassA 中的“City”將具有逗號分隔值“Manchester,Sydney”等的數(shù)據(jù),與 Village 以及逗號分隔值類似。現(xiàn)在我正在業(yè)務(wù)層構(gòu)建一個自定義對象,我在其中迭代 ComponentClass 的每個屬性并提取信息。Main(){ ComponentClass[] c = //Data from 3rd party; foreach(var data in c) { Parent p = new Parent(); if(data.classAObj.count > 0) { Star s = new Star(); s.Area = "infinite"; s.Color = "red"; List<string> sep = data.City.Split(',').Select(string.Parse).ToList(); foreach(var b in sep) { TinyStar t = new TinyStar(); t.smallD = b; s.Values.Add(t); } p.Curves.Add(s); } if(data.classBObj.count > 0) { Star s2 = new Star(); s2.Area = "infinite"; s2.Color = "red"; List<string> sep = data.Village.Split(',').Select(string.Parse).ToList(); foreach(var b in sep) { TinyStar t = new TinyStar(); t.smallD = b; s2.Values.Add(t); } p.Curves.Add(s); } }}在上面的代碼中,除了屬性名稱“City”和“Village”之外,兩個 if 語句執(zhí)行完全相同的操作。我想通過使用任何設(shè)計模式,可能是我在理論上知道的策略模式或任何其他模式來簡化這一點。這是我嘗試過的:public abstract class Base{ public int ID { get; set; } public string Countries {get;set;}}public class ClassA : Base{ public string City { get;set; }}public class ClassB : Base{ public string Village{ get;set; }} 我想把它作為一個通用的工廠方法,它將為我做循環(huán)并為我構(gòu)建對象以避免代碼重復public void CommonMethod(Base){ // How do I differentiate the properties for looping }
- 3 回答
- 0 關(guān)注
- 181 瀏覽
添加回答
舉報
0/150
提交
取消