【发布时间】:2016-03-03 17:31:12
【问题描述】:
我的一位同事提出了一个有趣的想法,但我们都不确定可能出现的并发症。
目前我们的大多数方法都有一个“out”参数来返回消息列表(成功、错误等)。就这样……
public bool Delete(int id, out List<UIMessage> uiMessages)
{
//Delete stuff
bool wasDeleteSuccessful = //set bool here
List<UIMessages> uiMessages = //Set messages here
return wasDeleteSuccessful
}
我们正在考虑返回一个具有 T 类型属性和 List 属性的新对象的想法。就这样……
public ResultObject<bool> Delete(int id)
{
//Delete stuff
bool wasDeleteSuccessful = //set bool here
List<UIMessages> uiMessages = //Set messages here
return new ResultObject<bool>(wasDeleteSuccessful, uiMessages)
}
我很确定这里唯一的好处是我们不必处理“输出”参数,但我们没有考虑哪些缺点?
【问题讨论】:
-
这个想法并不新鲜。检查this 实现和用例。
-
考虑到
List<>是一个引用类型,调用者可以安全地传入一个初始化的实例,然后该方法将添加到它。只是一种选择。 -
@PoweredByOrange 哦,对……说得通
-
有些人可以使用
out参数,有些人则不行。我会说这只是一种更清洁的方式来做你已经在做的事情。我不会将此标记为主要基于意见,因为它确实询问了潜在问题,但请记住,您的问题有点抽象。 -
@user2023116 我会说programmers.stackexchange.com 是一个更合适的姊妹网站,可以解决有关软件设计实践的问题。
标签: c# asp.net generics error-handling out