public void AcceptVisitor(EmployeeCollection employees) { //TODO: 重构:可以放入缓存,IEmployeeVisitor可以按参数传入,提取公共方法 var assemblies = AppDomain.CurrentDomain.GetAssemblies(); var visitorList = new List <Type>(); foreach (var a in assemblies) { var tempList = a.GetTypes(); foreach (var t in tempList) { if (typeof(IEmployeeVisitor).IsAssignableFrom(t) && !t.IsInterface) { visitorList.Add(t); } } } foreach (var v in visitorList) { var instance = Activator.CreateInstance(v); employees.Accept(instance as IVisitor); } }
public void AcceptReflectionVisitor(EmployeeCollection employees) { employees.Accept(new EmployeeVisitor()); }