我有这样的课。
public class Step<T>
{
public delegate void Act<T>();
Act<T> _act;
public Step(Act<T> action)
{
Contract.Requires(action != null);
_act = action;
}
public void PerformStep()
{
_act.Invoke();
}
}
我的问题如下。我希望此类的构造函数能够接受具有您在类中看到的定义的委托。我不希望那个代表成为我班的公共成员。另一种方法是在班级之外有一个公共代表,但没有其他班级,但这个班级需要它。有没有办法可以将代表设为私有?
如果该解决方案不可行,是否有替代方案?此步骤类只是要按顺序运行的委托的包装器。如果我可以有更通用的解决方案,则无需签名。
编辑:更多信息以供澄清。
此类的目的是能够允许用户执行以下操作。
如果我有一辆Class Car。这辆车将具有 Drive、Stop、Turn 等方法。使用此 Step 类,该类的用户应该能够创建其类的实例,然后执行以下操作。
Car c = new Car();
Step<Car> step1 = new Step<Car>(c.TurnLeft);
Step<Car> step2 = new Step<Car>(c.Drive);
Step<Car> step3 = new Step<Car>(c.TurnRight);
//add steps to a collection
c.AddNewRoutine(collection of steps);
c.RunRoutine(identify which routine);
这些步骤将被添加到允许它们按顺序执行的数据结构中。汽车类将包含一个可以保存这些步骤组的数据结构。然后,这允许创建任何类并让用户设置该类要采取的步骤,而无需类或主程序对行为进行硬编码。
完成。我需要步骤类保持原样。我只是不想允许以任何形式公开访问该委托,因为唯一需要它的类是 Step 类。