如果 属性 值错误,如何通过行为取消节点创建?
How to cancel node creation in case a property value is wrong, via behaviour?
一方面,我知道如何检查NodeService.OnCreateNodePolicy
中节点的属性,因为它获取新创建节点的子关联作为参数,但此时节点已经创建,所以我可以删除它。
另一方面,我认为理论上我可以阻止NodeService.BeforeCreateNodePolicy
中的节点创建,但我无法检查节点属性,因为它还不存在!
那么有什么办法可以避免"delete on create"解决方案吗?
如前所述,您可以抛出异常,然后事务将回滚。
如果这可以接受,则取决于您的用例。
有时监听 "every event" 上的属性更新可能会更好。这是否可行再次取决于您的用例。例如,如果您知道您正在同时设置所有属性,或者如果您知道一个 属性 将始终设置在最后,您可以等待 属性 并检查对所有其他人的约束。
使用 "every event" 的优点是最终抛出的异常可以是 "managed" 因为控件将 return 到试图保存节点的代码。
一方面,我知道如何检查NodeService.OnCreateNodePolicy
中节点的属性,因为它获取新创建节点的子关联作为参数,但此时节点已经创建,所以我可以删除它。
另一方面,我认为理论上我可以阻止NodeService.BeforeCreateNodePolicy
中的节点创建,但我无法检查节点属性,因为它还不存在!
那么有什么办法可以避免"delete on create"解决方案吗?
如前所述,您可以抛出异常,然后事务将回滚。
如果这可以接受,则取决于您的用例。
有时监听 "every event" 上的属性更新可能会更好。这是否可行再次取决于您的用例。例如,如果您知道您正在同时设置所有属性,或者如果您知道一个 属性 将始终设置在最后,您可以等待 属性 并检查对所有其他人的约束。 使用 "every event" 的优点是最终抛出的异常可以是 "managed" 因为控件将 return 到试图保存节点的代码。