我从另一个在线问答中借用了一些代码(被接受为有效的解决方案),但我的编译器似乎希望有一些额外的字符,我不明白为什么。
编译器期待所有这些:
Line: 37 - ) expected
Line: 37 - ; expected
Line: 37 - Invalid expression term ')'
Line: 37 - ; expected
在线路上:
if (ex is Avalara.AvaTax.RestClient.AvaTaxError avaTaxError)
在下面的代码块中
using System;
using SAPbobsCOM;
using SAPbouiCOM;
using Avalara.AvaTax.RestClient;
namespace B1UPCODE
{
public class B1UPCLASS
{
public void DynamicCode(params object[] parameters)
{
SAPbobsCOM.Company company = (SAPbobsCOM.Company)parameters[0];
SAPbouiCOM.Application application = (SAPbouiCOM.Application)parameters[1];
SAPbouiCOM.Form form = (SAPbouiCOM.Form)parameters[2];
SBO.UI.B1Form eventForm = (SBO.UI.B1Form)parameters[3];
UniversalFunctions.Model.CommonEventObject eventData = (UniversalFunctions.Model.CommonEventObject)parameters[4];
SBO.AddonLogic.AddonData addonData = (SBO.AddonLogic.AddonData)parameters[5];
var Client = new AvaTaxClient("Whatever I want to call the client", "1.0", Environment.MachineName, AvaTaxEnvironment.Production)
.WithSecurity("MyUsername", "MyPassword");
var pingResult = Client.Ping();
if ((bool)pingResult.authenticated)
{
application.StatusBar.SetText("Ping success", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
try
{
var transaction = new TransactionBuilder(Client, "DEFAULT", DocumentType.SalesInvoice, "9999")
.WithAddress(TransactionAddressType.SingleLocation, "255 S King St", null, null, "Seattle", "WA", "98104", "US")
.WithLineItem(100.0m, 1, "P0000000")
.Create();
}
catch(Exception ex)
{
if (ex is Avalara.AvaTax.RestClient.AvaTaxError avaTaxError)
{
application.StatusBar.SetText("AvaTax Error Type: " + avaTaxError.statusCode, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
application.StatusBar.SetText("AvaTax Error Message: " + avaTaxError.error.error.message.ToString(), SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
application.StatusBar.SetText("AvaTax Error Details:", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
foreach (var detail in avaTaxError.error.error.details)
{
application.StatusBar.SetText(" Description: " + detail.description, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
application.StatusBar.SetText(" Help Link: " + detail.helpLink, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
}
application.StatusBar.SetText("Full Error Response: " + avaTaxError.error.error.ToString(), SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
}
}
}
else
{
application.StatusBar.SetText("Ping fail", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
}
}
}
}
我尝试从if()比较中取出avaTaxError赋值,并在该块内创建一个变量——这让我只剩下一个预期的分号。但我仍然不明白它要我把它放在哪里。
if (ex is Avalara.AvaTax.RestClient.AvaTaxError)
{
var (Avalara.AvaTax.RestClient.AvaTaxError) avaTaxError;