C#异常报错-问题记录

问题一:.未经处理的异常:  System.TypeLoadException: 程序集xxx中的类型xxx的方法xxx没有实现。

异常提示:

未经处理的异常:  System.TypeLoadException: 程序集“AppScanSDK, Version=90.3.34
.2, Culture=neutral, PublicKeyToken=null”中的类型“AppScan.GuiLayerImpl.AppSc
Managers”的方法“GetUserDefinedTestData”没有实现。
   在 AppScan.GuiLayerImpl.AppScan..ctor(IEngineProvider provider, String exte
alTempPath, Boolean initAppScanLicense, String securityDllPath)
   在 AppScan.GuiLayerImpl.MainFactory.CreateAppScan()
   在 AppScan.AppScanFactory.CreateInstance()
   在 ConApp_Intfc_ReqstRecd_1.Program.Main(String[] args) 位置 D:\why\appscan
xtensionfortest\testproj1\ConApp-Intfc-ReqstRecd-1\ConApp-Intfc-ReqstRecd-1\Pr
ram.cs:行号 14

开发环境信息:

visual studio2015,引用了一个SDKEngineInterfaces.dll,版本号是90.3.5036.3,还引用了一个AppScanSDK.dll,版本号是90.3.3488.2

报错原因:

我的程序调用了这个函数,

AppScan.AppScanFactory.CreateInstance(),

而这个函数使用到了SDKEnginleInterfaces.dll里面的IEngineProvider接口,这个接口又包含了一个SDKEngineInterfaces.IConfigMgr接口成员,这个接口成员声明了GetUserDefinedTestData(),但是却并没有在引用它的类中实现()。

简单的说就是,AppScanSDK.dll的CreateInstance函数引用了SDKEnginleInterfaces.dll里面的某个接口,但是并没有提供实现方法。

为什么会这样呢?因为我引用的SDKEnginleInterfaces.dll的版本比AppScanSDK.dll的版本新,里面包含了AppScanSDK.dll没有应该要实现的方法,自然会报错。


问题发现过程:

我的代码非常的简单,就是AppScanSDK的示例程序:

using AppScan;
using System;
class MyClass
{
    public static int Main()
    {
        IAppScan appScan = AppScanFactory.CreateInstance();
        Console.Out.WriteLine(appScan.Version.ToString());
    }
}

可以生成成功,但是一运行就报错,好郁闷,好无辜,

搞了半天没发现原因。后来别人提示我引用AppScan安装目录下的那两个dll,一运行果然成功了。

但是,就这样就完了吗?就万事大吉了吗?NO

本着知其然也要知其所以然的精神,必须搞清楚原因!

虽然自己是C#新手,但是曾经也仔细看过一些C#概念,知道如果使用一个接口,就必须对它所有的方法都要实现。

要是不知道这一点,永远也不知道为什么。


你可能感兴趣的:(C#异常报错-问题记录)