如何在下面的接口中对Invoke
方法放置前提条件,指定由ObjectId
表示的对象必须存在?
interface IDeleteObjectCommand {
Guid ObjectId { get; }
void Invoke();
}
尝试 #1
我已经有一个名为 IObjectExistsCommand
的命令,可以用于确定对象是否存在。这些命令可以通过 IObjectExistsCommandFactory
实例化。我考虑过以下做法,但这会给命令的接口增加不必要的噪音(在我看来):
interface IDeleteObjectCommand {
IObjectExistsCommandFactory ObjectExistsCommandFactory { get; }
Guid ObjectId { get; }
// Contract.Requires(ObjectExistsCommandFactory.Create(ObjectId).Invoke());
void Invoke();
}
尝试 #2
与上述方法类似,但使用 ServiceLocator
。由于明显的原因不太理想,但更为简洁:
interface IDeleteObjectCommand {
Guid ObjectId { get; }
// Contract.Requires(ServiceLocator.Get<ObjectExistsCommandFactory>().Create(ObjectId).Invoke());
void Invoke();
}
编辑:同样,你如何定义外在状态的后置条件?即指该方法会导致新文件的存在。
Object Object { get; }
属性,该属性返回对象本身而不是 ID? - Rob