我正在开发中,我有两个组的一个类库:分配“操作”的对象
A)几个类与一组函数,或者“行动”,已经写在代码
B)必须“配置”几类时实例化,在某种程度上,使用我的图书馆用户可以从该第二组的类实例化对象,并从第一组“指定”动作
眼下我正在使用代表,如下所示:
Somwhere在代码中,我声明,是由一个使用了一些代表和B:
public delegate void Action03(int value);
然后我有“行动”,在A组中实现:
public Delegates.Action03 DoSomething03 = delegate(int value) { [code to execute when this action is specified on the constructor] };
最后,我们使用的构造函数,如下面以实例从B组,我们作为参数传递代表/我们要的是行动对象:
public SomethingGroupB(Delegates.Action03 act03) { ... }
那么当然,我们可以通过实例化代表作为参数对象:
SomethingGroupB somthg1 = new SomethingGroupB(GrpA01.DoSomething03);
但整个的一点是,我们可以实例相似的对象,但分配不同的操作:
SomethingGroupB somthg2 = new SomethingGroupB(GrpA07.DoSomething03);
SomethingGroupB somthg3 = new SomethingGroupB(GrpA01.DoSomething01);
SomethingGroupB somthg4 = new SomethingGroupB(GrpA02.DoWhatever);
所以......作为总结,我想有预编码(在我的图书馆)操作,并且用户必须在实例化时选择分配给新对象的操作,并且这些操作不会更改。
我想我也可以用事件做到这一点,但我并不需要添加和删除“动作”,他们是固定的类型B的每个对象的整个生命
所以我的问题是:是否有比我用代表实现的更好,更好,更清洁的解决方案?
非常感谢!
非常感谢。 'System.Action'看起来像是正确的解决方案,但是......必须返回值的动作/代表怎么办? –
Felko
2012-03-07 17:21:57
@Felko你可以使用'System.Func','System.Func '等。 –
2012-03-07 18:33:37