我有以下型号:
internal static List<Contracts.DataContracts.Report> GetReportsForSearch(string searchVal, string searchParam)
{
var param1 = new SqlParameter("@SearchVal", searchVal);
var ctx = new StradaDataReviewContext2();
var reports = new List<Contracts.DataContracts.Report>();
try
{
//Validate param1 here and return false if the requirment are not met
}
catch(Exception e)
{
//Throw
}
}
param1 here这是用户输入的值,我想在此验证它,如果不满足要求,我想返回错误。
但是如何从模型中返回错误?方法属于List类型,我不能只在这个方法中编写return false
。
有任何建议怎么做?
答案 0 :(得分:1)
当不满足要求时,你没有想过抛出异常是好的。我们不应该使用例外来控制程序流程。
我脑子里有两种选择:
<强> 1。使用对象
将您的GetReportsForSearch
方法修改为以下签名:
internal static List<Contracts.DataContracts.Report> GetReportsForSearch(string searchVal,
string searchParam, ReportRequestor requestor)
{
var param1 = new SqlParameter("@SearchVal", searchVal);
var ctx = new StradaDataReviewContext2();
var reports = new List<Contracts.DataContracts.Report>();
try
{
//Validate param1 here and call RequirementsAreNotMet method if the requirements are not met
requestor.RequirementsAreNotMet();
}
catch(Exception e)
{
//Throw
}
}
然后,您可以在ReportRequestor
class
public class ReportRequestor
{
public void RequiremenrsAreNotMet()
{
//code which handle situation when requiremenets are not met
}
}
<强> 2。使用返回类型作为状态指示
这样,当不满足要求时,您应该创建ReportGenerationStatus
对象,并将HasResult
标志设置为false。
在其他情况下,只需将HasResult
设置为true,并相应地设置结果。这有点模仿从函数式语言中已知的Option
类型
internal static ReportGenerationStatus GetReportsForSearch(string searchVal, string searchParam)
{
//code for your method
}
public class ReportGenerationStatus
{
public List<Contracts.DataContracts.Report> Result { get; set; }
public bool HasResult { get; set; }
}