У меня действительно сумасшедшее поведение в моем коде:
Метод, который вызывает 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.