gpt4 book ai didi

c# - C#出现错误: Type “Indirect.Class” Not Defined In an Assembly Not Referenced . Must Add a reference to assembly “Indirect”

转载 作者:行者123 更新时间:2023-12-02 10:54:21 25 4
gpt4 key购买 nike

我意识到这个问题已经提出,但是由于与我在类似问题上看到的原因不同,导致了我的原因,所以这是我的设置。

我有2个C#项目AB,项目B引用了一个第三方库IndirectA将调用在B中定义的静态方法,当我构建时,出现以下错误。

Error 2 The type 'Indirect.Class' is defined in an assembly that is not referenced. You must add a reference to assembly 'Indirect, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.



这是代码:
//Project A
class A
{
static void Main(string[] args)
{
B.TestMethod("fileName", "param2");
}
}

//Project B
public class B
{
public static string TestMethod(string fileName, string param2)
{
return "";
}

public static bool TestMethod(Indirect.Class doc, string anotherParam)
{
return false;
}
}

因此,即使在 A中,我正在调用不依赖于 B程序集的 Indirect方法,我仍然看到错误。有人可以向我解释为什么编译器在编译时无法确定这一点吗?我可以简单地重命名第二个 B.TestMethod,错误就会消失,或者我可以在其中添加第三个参数,但是所有这些似乎都是不必要的。

最佳答案

编译器必须选择最佳匹配的重载,并且这样做,它会评估每个候选项所需的转换次数,然后对它们进行排名。

您和我都知道,因为存在一场精确的比赛,所以其他人的胜负并不重要,因为他们永远都不会赢。但这不是语言规则的编写方式,也不是编译器的工作方式。

直到编译器对所有重载(包括您未调用的重载)进行排名之后,编译器才知道您不会调用第二重载。为此,它检查是否可以将实际参数(string类型)转换为形式参数(Indirect.Class)的类型,并且需要在程序集内部查找Indirect.Class,因为这是定义此转换的地方。

关于c# - C#出现错误: Type “Indirect.Class” Not Defined In an Assembly Not Referenced . Must Add a reference to assembly “Indirect” ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com