C# 方法调用需要引用程序集。为什么?
大会AC# 方法调用需要引用程序集。为什么?,c#,.net,.net-assembly,C#,.net,.net Assembly,大会A class A { void SaveToDisk(); // Calls B.Extract } 大会B class B { static void Extract(); // References Ionic.Zip } 编译器告诉我程序集A也需要对Ionic.Zip的引用,即使程序集A在SaveToDisk方法中没有对Ionic.Zip中的任何类型的引用。为什么需要在程序集A中引用Ionic程序集?是否可能B也有一个重载静态无效提取(SomeTypeFromIo
class A {
void SaveToDisk(); // Calls B.Extract
}
大会B
class B {
static void Extract(); // References Ionic.Zip
}
编译器告诉我程序集A也需要对Ionic.Zip的引用,即使程序集A在SaveToDisk方法中没有对Ionic.Zip中的任何类型的引用。为什么需要在程序集A中引用Ionic程序集?是否可能B也有一个重载
静态无效提取(SomeTypeFromIonicZip参数)
?有一个带有ZipFile参数的重载。这会导致这种情况吗?可能assemblyB
会在其他地方公开assemblyC
中的类型。您正在将类型从icogal.zip泄漏到程序集元数据中。从片段中看,这是不明显的,如果你不知道这是怎么发生的,考虑反编译器。是的,过载是错误的。若要选择正确的重载,.NET需要引用Ionic.Zip以检查是否存在从SomeType到ZipFile的隐式转换。