Я получил следующий конструктор:
private PicklistHelper(string docId, string prodId, string user, string formProdId, string filepath,string parts)
{
this.documentId = docId;
this.prodId = prodId;
this.user = user;
this.filepath = filepath;
this.parts = parts;
this.formProdId = formProdId;
Log.Message("test parts = " + this.parts);
}
В logmessage отображается значение для переменной детали. После этого я вызываю функцию.
private ArrayList GetPartDatasets()
{
Log.Message("test line 1");
ArrayList picklist = new ArrayList();
Log.Message("test line 2 " + parts);
string[] partIds = parts.Split(new[] { ';' });
Log.Message("test line 3");
в журналах появляется вторая тестовая строка, но переменная частей пуста. после этого появляется ошибка null ref.
Объект PicklistHelper создается в функции, которая вызывается несколько раз подряд. Любая идея, что вызывает проблему?
Проблема в том, что parts
являются нулевыми.
В принципе, есть две возможные причины, которые я могу определить из кода, который вы предоставили с комментариями:
PickListHelper
вызывается хотя бы один раз в любом мыслимом случае в вашем приложении, тогда все еще возможно, что все, что вызывает PicklistHelper
, пропускает значение null
для параметра parts
. Это может быть проверено внутри конструктора чем-то вроде if (parts == null) throw new ArgumentNullException("parts");
, так как вам нужен параметр детали. В противном случае вы должны выяснить, кто или что вызывает PicklistHelper
.GetPartDatasets
вызывается до того, как поле parts
будет инициализировано или после того, как оно будет сброшено до null
.струнные части;
if (parts != null)
{
string[] partIds = parts.Split(new[] { ';' });
Log.Message("test line 3" + partIds);
}
Звучит неплохо. :)
привет, Сехар
нулевые строки - это PITA. В нашем программном обеспечении мы не обрабатываем строки последовательно, чтобы мы вызывали методы для нулевых строк.
Попробуй это
private PicklistHelper(string docId, string prodId, string user, string formProdId, string filepath,string parts)
{
this.documentId = docId?? string.Empty;
this.prodId = prodId?? string.Empty;
this.user = user?? string.Empty;
this.filepath = filepath?? string.Empty;
this.parts = parts?? string.Empty;
this.formProdId = formProdId?? string.Empty;
Log.Message("test parts = " + this.parts);
}
GetPartDatasets()
метод вPicklistHelper
классе?