Сумасшедшее поведение при вызове метода: метод вызывает A (), но вызывает свойство Z - PullRequest
0 голосов
/ 03 сентября 2018

У меня действительно сумасшедшее поведение в моем коде:

Метод, который вызывает A(), вызывает Z().

У меня есть интерфейс IConverterStoreBase, который предоставляет метод: ConverterBase OrderConverter(ConverterType type):

public interface IConverterStoreBase
{
    ConverterBase OrderConverter(QDTUtil.ConverterType type);
}

Базовый класс: ConverterStoreBase, который наследуется от IConverterStorBase:

private ConverterBase OrderConverter(ConverterType TypeOfConverter)
{
    ConverterBase theConverter = MakeConverter(TypeOfConverter);
    theConverter.MakeConverter();
    return theConverter;
}

ConverterBase IConverterStoreBase.OrderConverter(ConverterType type)
{
    return OrderConverter(type);
}

Класс вызова: DrawingProject, который вызывает OrderConverter:

private static ConverterBase GetConverter(IConverterStoreBase CSB)
{
    return !DataProvider.ConverterType.Equals(ConverterType.NotSupported) ? CSB.OrderConverter(DataProvider.ConverterType) : null;
}

DataProvider - это центральный класс, который содержит различные структуры данных и переменные, которые необходимы во многих и разных частях кода.

Теперь к проблеме (которая впервые появляется в Visual Studio 2017):

Во время отладки я заполняю данные из CSV, которые обрабатываются программой. Когда все данные обработаны, программа готова подготовить конвертер на основе этих данных. Это шаг, где GetConverter называется.

Сначала GetConverter проверяет, поддерживаются проекты ConverterType или нет. Если это не так, просто верните null, иначе он должен вызвать IConverterStoreBase OrderConverter, но он вызывает свойство из DataProvider, которое не имеет ничего общего с этим шагом, он вызывает:

public static StatusControlBase StatusControlBase { get; set; } = null;

, который является экземпляром для управления строкой состояния. CodeMap и все ссылки показывают правильный путь вызова.

Возможно, что-то сломалось при переходе с vs2013 на vs2017.

Есть предложения как это исправить?

изменить 1:

Name Language
>   QDTUtil.dll!QDTUtil.ProjectData.GetValue(string group = "Converter", string value = "Topology") Line 51 C#  Symbols loaded.
    Converter.dll!Converter.GL150.FactoryGL150N.AddOverview.get()   Unknown Non-user code. Skipped loading symbols.
    Converter.dll!Converter.GL150.ConverterGL150N.MakeConverter()   Unknown Non-user code. Skipped loading symbols.
    Converter.dll!Converter.ConverterStoreBase.Converter.IConverterStoreBase.OrderConverter(QDTUtil.ConverterType type) Unknown Non-user code. Skipped loading symbols.
    QDTFunction.dll!QDTFunction.DrawingProject.GetConverter(Converter.IConverterStoreBase CSB = {Converter.GL150.StoreGL150}) Line 120  C#  Symbols loaded.
    QDTFunction.dll!QDTFunction.DrawingProject.CreateConverter() Line 68    C#  Symbols loaded.

1 Ответ

0 голосов
/ 03 сентября 2018

Хорошо, эта проблема была решена путем редактирования DLL. Свойства:

https://stackoverflow.com/questions/25888343/symbol-status-showing-skipped-loading-for-dll-in-modules-window

что-то, что я с ним не ассоциировал.

кредит за это решение переходит к mjwills. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...