我有一个方法,我有几个可选的布尔参数,对象的不同属性将根据哪些参数为真给出一个值.
这是上下文的方法:
public static AutoPatientLookup InitializeTestPatientInfo(bool SSN = false, bool PatientNumber = false, bool Gender = false)
{
AutoPatientLookup TestAPIParameters = new AutoPatientLookup();
TestAPIParameters.FirstName = "First";
TestAPIParameters.LastName = "Last";
TestAPIParameters.DOB = "4/9/1953";
TestAPIParameters.PracticeID = 11071;
if (SSN)
{
TestAPIParameters.SSN = 000010281;
}
if (PatientNumber)
{
TestAPIParameters.PatientNumber = 458;
}
if (Gender)
{
TestAPIParameters.Gender = "F";
}
return TestAPIParameters;
}
Run Code Online (Sandbox Code Playgroud)
但是,有时我希望第二个或第三个布尔参数为true,但是我无法将其指定为我想要切换的参数,而不会为前面的参数明确说明true或false.
如果我想初始化一个AutoPatientLookup具有其性别属性值的对象,我将不得不这样调用它:
InitializeTestPatientInfo(false,false,true);
Run Code Online (Sandbox Code Playgroud)
我尝试了一些类似的东西
InitializeTestPatientInfo(Gender = true);
Run Code Online (Sandbox Code Playgroud)
和
InitializeTestPatientInfo(bool Gender = true);
Run Code Online (Sandbox Code Playgroud)
但似乎没什么用.是否有正确的语法来完成我正在尝试的内容?即使只有三个布尔参数,初始化语法也不是很不方便,如果有几十个,这可能更适用.
我尝试调用以下过程时收到错误:
ApplyVoucherNumberToBillingCharges(practiceID,
Convert.ToInt32(rdoVoucherNumberAppliesTo.SelectedValue),
VoucherNumber,
VoucherNumberID,
Convert.ToInt32(hdRoundingRecordId.Value),
ChargeID,
hdGenerateVoucherNumberChargeList.Value,
Convert.ToDateTime(txtFromDate.Text),
Convert.ToDateTime(txtToDate.Text),
Convert.ToDateTime(txtPostingDate.Text),
Convert.ToInt32(ddlVisitType.SelectedValue),
SelectVisitProvider.SelectedID,
SelectVisitLocation.SelectedID,
chkOverwriteVoucherNumber.Checked);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
输入字符串格式不正确c#
我知道这与转换类有关,因为我之前调用不同的方法时遇到了同样的错误.区别在于只有一个参数使用Convert类,现在有几个参数.
错误信息并不像我想的那样具有描述性,也没有提供许多关于特定情况发生的线索.
除了对每个执行此操作的参数进行注释和硬编码以及查看哪个参数导致问题之外,还有更好的方法来确定问题是什么吗?
我真的很想知道,因为我的项目有时需要几分钟才能构建(我知道,这很荒谬,我已经尝试了一切来解决这个问题,但没有任何作用)所以调试这个小问题可能需要永远.
感谢您的任何帮助,您可以提供.