我的代码中有一个非常疯狂的行为:
调用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.
好的,通过编辑dll解决了这个问题。特性:
我没有与之相关的东西。
这个解决方案的功劳归功于mjwills。 :)