Tag: composite

如何在Ninject中使用“复合设计模式”

validation规则合同: public interface IValidationRule { bool IsValid(); } 具体validation规则: public class MyClass : IValidationRule { public bool IsValid() { return true; } } 综合: public class ValidationRuleComposite : IValidationRule { private readonly IEnumerable _validationRules; public ValidationRuleComposite(IEnumerable validationRules) { _validationRules = validationRules; } public bool IsValid() { return _validationRules.All(x => x.IsValid()); } } 当我向IValidationRule询问IValidationRule我想得到ValidationRuleComposite 。 如果我向容器询问IValidationRule列表,我想获得除ValidationRuleComposite之外的所有IValidationRule实现。 […]

如何使用LINQ选择复合对象的所有后代

如何使用LINQ更好地使ComponentTraversal.GetDescendants() ? 题 public static class ComponentTraversal { public static IEnumerable GetDescendants(this Composite composite) { //How can I do this better using LINQ? IList descendants = new Component[]{}; foreach(var child in composite.Children) { descendants.Add(child); if(child is Composite) { descendants.AddRange((child as Composite).GetDescendants()); } } return descendants; } } public class Component { public string Name { […]