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

问题描述 投票:1回答:1

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

调用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,否则它应该调用IConverterStoreBaseOrderConverter,但它调用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.

c# visual-studio inheritance visual-studio-2017
1个回答
0
投票

好的,通过编辑dll解决了这个问题。特性:

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

我没有与之相关的东西。

这个解决方案的功劳归功于mjwills。 :)

© www.soinside.com 2019 - 2024. All rights reserved.