人,
我需要建议......我想在网格视图中实现“添加新项目”,并从同一网格中“删除所选项目”,例如Add(IEnumerable newItems)。
我不想实现派生的网格视图类,因为我寻找灵活的解决方案而不与网格有很强的关系。
我正在研究在我的案例中使用'Decorator'模式,但我无法设计它:装饰器可以包含/聚合网格视图(这不是问题),但装饰器和网格视图没有通用接口 - 即'添加新项目是新功能,网格视图没有。 我可以在网格视图中实现空的“添加”方法并将其包装在装饰器中(作为替代方式)。
无论如何,我很乐意设计好的解决方案:)
答案 0 :(得分:1)
visitor pattern似乎非常适合您的问题。
它表示要对对象的元素执行的操作 结构体。访问者允许您定义新操作而无需更改 它运作的元素的类。
答案 1 :(得分:0)
我认为最简单的方法是扩展方法:
public static class GridViewExtensions
{
public static void RemoveSelectedItems(this GridView grid)
{
// implementation goes here
}
public static void Add<T>(this GridView grid, IEnumerable<T> items)
{
// implementation goes here
}
}
用法甚至比装饰的GridView更简单 - 你不需要创建装饰器,只需使用序数GridView:
gridView.RemoveSelectedItems();
使用Decorator,您必须实现修饰对象的所有公共接口并将调用转移给它。这对GridView来说是很多工作。
更新:另一种解决方案 - 只需从GridView继承并将您的方法添加到派生类。使用CustomGridView而不是GridView。