我有三层C#软件:UI,Business,Database。
我想要在业务层中实现一些业务规则。例如,如果两个对象具有相同的名称,则业务层需要向UI抛出异常。
我的问题是我的应用程序是多语言,而我的业务层无法访问我的资源文件。所以我的UI需要从业务层捕获异常,并决定它将向用户显示的消息。
我正在考虑创建一个BusinessException类,其中的属性告诉UI要在ressource文件中使用哪个键。你认为这是一个好方法吗?或者你有更好的想法?谢谢!
答案 0 :(得分:1)
首选解决方案是创建表示不同错误的不同异常类型,将任何重要数据作为属性添加到异常中,并让UI处理面向用户的错误消息。
如果您有一个单独的UI设计团队想要处理向用户显示的文本(包括错误消息),这是理想的选择。坦率地说,开发人员倾向于为其他开发人员编写好的错误消息,但不会为用户编写。
否则,在UI可以查找(如您所建议)或本地化业务层中的错误消息的例外中嵌入某种形式的消息ID。
答案 1 :(得分:0)
我最终得到了这两种解决方案的组合。所以我只使用一个类:BusinessRuleException。此类作为属性“规则”,是我所有业务规则的枚举。
当我的UI收到BusinessRuleException时,它可以捕获它,然后将“规则”与资源文件进行比较,并为用户获取友好消息。如果UI无法找到翻译,则只会按原样发送规则。因此,用户仍然需要进行更改才能了解正在发生的事情。
它不喜欢每个不同业务规则的不同异常的解决方案,因为它最终会有如此多的额外代码,这无助于您理解您正在做的实际工作是什么。