C# 现有控件的新功能设计
伙计们 我需要建议。。。我想实现“向网格视图添加新项”和“从同一网格中删除选定项”,如添加(IEnumerable newItems) 我不想实现派生的网格视图类,因为我寻求的是与网格没有强关系的灵活解决方案 在我的案例中,我正在研究“Decorator”模式的使用,但我无法设计它:Decorator可以包含/聚合网格视图(这不是问题),但Decorator和网格视图没有公共接口,即“添加新项”是新功能,而网格视图没有。 我可以在网格视图中实现空的“Add”方法,并将其包装在decorator中(作为替代方法)C# 现有控件的新功能设计,c#,.net,design-patterns,decorator,C#,.net,Design Patterns,Decorator,伙计们 我需要建议。。。我想实现“向网格视图添加新项”和“从同一网格中删除选定项”,如添加(IEnumerable newItems) 我不想实现派生的网格视图类,因为我寻求的是与网格没有强关系的灵活解决方案 在我的案例中,我正在研究“Decorator”模式的使用,但我无法设计它:Decorator可以包含/聚合网格视图(这不是问题),但Decorator和网格视图没有公共接口,即“添加新项”是新功能,而网格视图没有。 我可以在网格视图中实现空的“Add”方法,并将其包装在decorator中
无论如何,我会很高兴有任何想法来设计好的解决方案:)我认为最简单的方法是扩展方法:
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
}
}
使用Decorator,您必须实现装饰对象的所有公共接口,并将调用转移到它。对于GridView,这是一项大量的工作
更新:另一个解决方案-只需从GridView继承并将您的方法添加到派生类。使用CustomGridView而不是GridView。我认为最简单的方法是扩展方法:
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
}
}
使用Decorator,您必须实现装饰对象的所有公共接口,并将调用转移到它。对于GridView,这是一项大量的工作
更新:另一个解决方案-只需从GridView继承并将您的方法添加到派生类。使用CustomGridView而不是GridView。A似乎非常适合解决您的问题
它表示要对对象的元素执行的操作
结构。Visitor允许您定义新操作,而无需更改
它操作的元素的类
A似乎很适合你的问题
它表示要对对象的元素执行的操作
结构。Visitor允许您定义新操作,而无需更改
它操作的元素的类
是的,这是最简单的。。。但我需要依赖于新功能的存储状态。。在这种情况下,扩展对我没有帮助。添加和删除项目的状态?对不起,我不解释上面的问题。我不怕工作:)真的,我想设计好的解决方案。。。我想我不是第一个应该实施类似问题的人。是的,这是最简单的。。。但我需要依赖于新功能的存储状态。。在这种情况下,扩展对我没有帮助。添加和删除项目的状态?对不起,我不解释上面的问题。我不怕工作:)真的,我想设计好的解决方案。。。我想我不是第一个应该实施类似问题的人。我喜欢:)我正在尝试实施这个nowoleksii,你能补充一下答案吗?我接受。只是补充了一个小的答案。Tnx!我喜欢:)我正在尝试实现这个nowoleksii,你能补充一下答案吗?我接受。只是补充了一个小的答案。Tnx!