方法调用的疯狂行为:方法调用A()但调用属性Z

时间:2018-09-03 06:11:46

标签: c# visual-studio inheritance visual-studio-2017

我的代码中有一个非常疯狂的行为:

调用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的{​​{1}},但它会调用OrderConverter中的属性,而该属性与此步骤无关,它调用:

DataProvider

是控制状态栏的实例。 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 :(得分:0)

确定此问题已通过编辑dll解决。属性:

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

我没有与之联系的东西。

该解决方案的信用归mjwills所有。 :)

相关问题