在直接引用其他dll的不同dll中调用方法会导致在原始调用中出现引用错误

本文关键字:调用 dll 引用 原始 错误 方法 其他 | 更新日期: 2023-09-27 18:03:48

在应用程序中调用

Essentials.Class.LoadProgressIndicater(parent)

直接方法失败

LoadProgressIndicater(object parent)
{
    var temp = parent as XtraForm; //XtraForm third party control/dll
}

间接方法有效

LoadProgressIndicater(object parent)
{
    _LoadProgressIndicater(parent);
}
_LoadProgressIndicater(object parent)
{
    var temp = parent as XtraForm; //XtraForm third party control/dll
}

为什么会发生这种情况,有没有更清晰的方法?

<标题> 错误

类型在未引用的程序集中定义。必须添加对程序集

在直接引用其他dll的不同dll中调用方法会导致在原始调用中出现引用错误

的引用

已解析

具有相同数量实参的构造函数必须通过隐式转换求值,以确定哪个函数成员(构造函数)更好。

这就是为什么我需要将引用添加到第二个项目中,以便编译器可以确定哪个构造函数更好。

如果构造函数没有相同数量的实参,则不需要求值,编译器也不需要对第二个工程的引用。

<标题> 解决方案

只用一个方法处理所有实例

public static void LoadProgressIndicator(object parent_control)
{
 if (parent_control is XtraForm)
    LoadProgressIndicator(parent_control as XtraForm, null, null, null);
 else
 {
    if (parent_control is XtraUserControl)
       LoadProgressIndicator(null, parent_control as XtraUserControl, null, null);
    else
    {
       if (parent_control is System.Windows.Forms.Form)
          LoadProgressIndicator(null, null, parent_control as System.Windows.Forms.Form, null);
       else
          LoadProgressIndicator(null, null, null, parent_control as System.Windows.Forms.UserControl);
    }
 }
}