Как использовать свойство ListViewItem.Text с обфусцированным кодом - PullRequest
1 голос
/ 05 августа 2020

Я использую реактор. net для обфускации моего кода c#. Я не обращал внимания на этот вопрос, когда начинал писать свое текущее приложение, поэтому теперь я проверяю весь свой код, чтобы убедиться, что они хорошо работают с обфускацией. Я решил многие из этих проблем, но есть 1, я не мог понять, почему он не работает.

Мой рабочий код без обфускации:

for (int i = 0; i < LoadedLivePresets.Count; i++)
{
    try
    {
        MessageBox.Show("LoadedLivePresets[i] : " + LoadedLivePresets[i].ToString() + "\nDetails : " + LoadedLivePresets[i].PresetDetails.ToString());
        ListViewItem LVI = new ListViewItem();
        MessageBox.Show("LoadedLivePresets[i].PresetName : " + LoadedLivePresets[i].PresetName);
        if (LVI == null)
            MessageBox.Show("LVI NULL");
        MessageBox.Show("LVI.Text : " + LVI.Text);
        LVI.Text = LoadedLivePresets[i].PresetName;
        MessageBox.Show("a1a1a1a1");
        LVI.Tag = LoadedLivePresets[i];
        MessageBox.Show("a2a2a2a2");
        mainForm.lvLiveSources.Items.Add(LVI);
        MessageBox.Show("a3a3a3a3");
    }
    catch (Exception ex)
    {
        MessageBox.Show("ex : " + ex.Message);
        break;
    }
}

Я написал сообщение коробки повсюду, чтобы определить местонахождение проблемы. Я знаю, что в моем пользовательском списке есть элементы, в которых я уверен. Когда я запускаю этот код после обфускации, я правильно вижу свои предустановленные данные. Я вижу свое presetName правильно, пока никаких проблем. Мой код не показывает "LVI NULL", поэтому if (LVI == null) становится ложным. Я вижу, что LVI.Text пуст, поэтому я могу получить доступ к этому свойству после обфускации, но проблема в этой строке LVI.Text = LoadedLivePresets[i].PresetName; после того, как эта строка будет выполнена, мой код переходит в исключение и говорит, что объект null .. Я проверил LVI и знаю, что он не равен нулю, и я также проверил LoadedLivePresets [i] .PresetName, и он также заполнен.

Что мне здесь не хватает? обе стороны не равны нулю, так почему я получаю здесь ошибку объекта null? Кто-нибудь может мне объяснить, пожалуйста?

...