我有一个我想要的课程,确保完整的方法完成被调用......不知何故。例如:
public class Order
{
public Guid TransactionId {get; private set;}
public void Complete(Guid transactionId)
{
TransactionId = transactionId;
}
}
如何确保客户端调用Complete方法?
public class Cart
{
public void Process()
{
Order o = new Order();
// Do stuff
o.Complete(GetTransactionId());
}
}
上面的代码看起来很弱,因为它不可能调用完整的方法:
public class Cart
{
public void Process()
{
Order o = new Order();
// Do stuff
}
}
听说过事件,但不太确定这是否是正确的解决方案......有什么想法吗?
答案 0 :(得分:2)
您可以使其实现IDisposable
并始终在using语句中创建新订单。这样您就可以控制何时调用Complete
方法。
答案 1 :(得分:0)
不被调用的唯一方法是,如果有异常或其他一些行为导致它不能进入下一个语句(即灾难性故障)。
您可以通过将其置于a finally
block:
public void Process()
{
try {
Order o = new Order();
// Do stuff
} finally {
o.Complete(GetTransactionId());
}
}
答案 2 :(得分:0)
您想强制订单的用户记住完成它,是吗?如果是用户选择何时调用Complete()那么那将很难。我想你要么在完成订单或的其他事情之后自动完成完成,你必须以某种方式确保用户明白他忘记完成它。
如果没有关于订单是什么以及如何使用它的详细信息,很难知道。