【发布时间】:2010-12-01 17:39:28
【问题描述】:
我有一个想要构建的控件框架的概念。这个想法的不同之处在于,我不打算采用“一刀切”的方法或“一个控制来统治所有人”的方法。
例如,Telerik 制作了一个非常好的 Grid 控件,ComponentOne、Xceed 等也是如此。但是,它们都是具有成百上千个方法和属性、复杂对象模型层次结构等的巨大控件……所有很多时候,这些网格对于你需要的东西来说太过分了,但你仍然必须承担学习整个网格来做一些简单的事情的艰巨任务。
我的概念更像是一种“混合”方法。您可以在其中创建一个非常简单的控件,然后构建您可以“添加”到该控件的功能点菜。例如,您有一个简单的网格,并且您想为每个网格添加带有页眉和页脚的“部分”。
好的,那么问题出在哪里?做这种事情的传统方法是通过多重继承,C# 不支持。即使它确实支持它,我仍然认为 MI 增加的问题多于它解决的问题。
所以我正在征求 SO 关于如何解决这个问题的意见。 MEF 会是一个潜在的解决方案吗?
编辑:
我想到的是,可以使用表达式树从各种表达式构建控件。我必须再考虑一下,但这是一个有趣的概念。
另一个可能的选项可能是“控制生成器”,它基于选定的特征生成装配。这似乎更复杂,但使用 T4 可能是可控的。
【问题讨论】:
-
@Robert Harvey - 我已经在很大程度上拒绝了扩展方法,因为它们不能真正提供额外的状态,只能提供方法。您引用的技术需要最终用户实现所有其他状态,而我并不真正热衷于此。
标签: c# frameworks mixins