Я довольно новичок в C# и получаю сообщение об ошибке «Ссылка на объект не установлена в экземпляр объекта». Я создаю XML-пакет и отправляю его на внешнее устройство для управления. Если я поставлю следующий код в форме в событии клика, он прекрасно работает. На БТН Нажмите событие выглядит следующим образом:Переменная scoping C#
SetTestInfoResponse testDataDs = null;
TestInformation testInfo = null;
this.PopulateTestDataXml();
string stringRequestXML = string.Empty;
string stringResponseXML = string.Empty;
//Creates Request packet
stringRequestXML = XMLCommunicationPackets.SetTestInformation (testInfo, testInfo.TestID, testInfo.TestUser, testInfo.TestSampleType, testInfo.TestSampleId, testInfo.TestMethodNumber, testInfo.TestTubeSn, testInfo.TestComments);
//Write set Test Info XML Packet and get response for ack or failure.
stringResponseXML = PluginContext.GetInstance().InstrumentDriverCurrent.GetInstrumentControl().SetCommonParameter(stringRequestXML);
Однако, если я перееду всю свою функцию из формы и попытаться вызвать его при нажатии на кнопку, я получаю ошибку.
написано в методе от формы в .cs файл, он читает:
public static SetTestInfoResponse SetTestData()
{
SetTestInfoResponse testDataDs = null;
TestInformation testInfo = null;
string stringRequestXML = string.Empty;
string stringResponseXML = string.Empty;
//Creates Request packet
stringRequestXML = XMLCommunicationPackets.SetTestInformation (testInfo, testInfo.TestID, testInfo.TestUser, testInfo.TestSampleType, testInfo.TestSampleId, testInfo.TestMethodNumber, testInfo.TestTubeSn, testInfo.TestComments);
//Write set Test Info XML Packet and get response for ack or failure.
stringResponseXML = PluginContext.GetInstance().InstrumentDriverCurrent.GetInstrumentControl().SetCommonParameter(stringRequestXML);
Ошибка возникает при создании stringRequestXml.
Часть моей проблемы - PopulationTestData() - это метод в самой форме. Его цель состоит в том, чтобы принимать данные от txtboxes и cmbboxes и назначать их в соответствующие аргументы ..
private TestInformation PopulateTestDataXml()
{
TestInformation UiTestData = new TestInformation();
UiTestData.TestID = txtTestId.Text;
UiTestData.TestUser = cmbUsers.SelectedItem.ToString();
UiTestData.TestSampleType = txtSampleType.Text;
UiTestData.TestSampleId = txtSampleId.Text;
UiTestData.TestMethodNumber = Convert.ToInt32(cmbMethod.SelectedItem);
UiTestData.TestTubeSn = txtTubeSerialNum.Text;
UiTestData.TestComments = txtComments.Text;
return UiTestData;
}
Вот метод SetTestInformation(), где я получаю сообщение об ошибке:
public static string SetTestInformation(TestInformation testInfo, string stringTestId, string stringUser, string stringSampleType, string stringSampleId, int intMethodNumber, string stringTubeSn, string stringComments)
{
try
{
string stringRequestXMLPacket = string.Empty;
string stringType = @"Request";
string stringCommand = @"Set";
string stringArgument = @"TestInformation";
CommunicationPacket requestXMLPacket = new CommunicationPacket(stringRootTag, stringXMLVersion, stringType, stringCommand);
requestXMLPacket.AddCommandArgument(stringArgument);
requestXMLPacket.AddArgumentItem(stringArgument, "sTestId", testInfo.TestID.ToString());
requestXMLPacket.AddArgumentItem(stringArgument, "sUser", testInfo.TestUser.ToString());
requestXMLPacket.AddArgumentItem(stringArgument, "sSampleType", testInfo.TestSampleType.ToString());
requestXMLPacket.AddArgumentItem(stringArgument, "sSampleId", testInfo.TestSampleId.ToString());
requestXMLPacket.AddArgumentItem(stringArgument, "nMethodNumber", testInfo.TestMethodNumber.ToString());
requestXMLPacket.AddArgumentItem(stringArgument, "sTubeSn", testInfo.TestTubeSn.ToString());
requestXMLPacket.AddArgumentItem(stringArgument, "sComments", testInfo.TestComments.ToString());
stringRequestXMLPacket = requestXMLPacket.CreateXMLPacket();
return stringRequestXMLPacket;
}
catch (Exception ex)
{
throw ex;
}
}
Iknow Я нахожусь здесь возникают проблемы с переменной областью. Мне еще нужно использовать метод PopulateTestDataXml в форме, прежде чем я вызову метод setTestData(). Но когда я вызываю метод, я должен объявить testInfo = null или параметры SetTestInformation недействительны («Не существует в текущем контексте»). Что мне нужно было бы передать и как для этого работать как вызываемый метод в форме btn click? Мне нужно сделать это, так как у меня есть много десериализующих функций, написанных так же, чтобы поймать сообщения об ошибках в ответе xml (все они работают отлично) и его слишком много информации о событии click. (И мне нужно учиться).
Благодаря
Спасибо, вы были правы. Я не передавал значение SetTestData – willkk