ASP.NET (Web Forms / MVC) 編譯時會將專案內所有 `.cs` 檔**合併編譯成單一組件**,只要命名空間一致,**無需額外引用**,直接 `new ClassName()` 即可。
// File: A.cs
namespace MyWebApp.Models {
public class A {
public string Stra() { return "A"; }
}
}
// File: B.cs
namespace MyWebApp.Models {
public class B {
public string Strb() { return "B"; }
}
}
// File: A.cs (或 Controller/Service 中)
namespace MyWebApp.Models {
public class A {
public string CallB() {
B b = new B(); // 直接實例化
return "A calls B: " + b.Strb();
}
}
}
| 錯誤 | 原因 | 解決 |
|---|---|---|
| CS0246: The type or namespace name 'B' could not be found | 命名空間不符、類別非 public、專案未建置 | 檢查 namespace、加 public、Clean Rebuild |
| CS0122: 'B.Strb' is inaccessible due to its protection level | 方法非 public | 改為 `public string Strb()` |
| 循環參考 | 專案 A 參考 B,B 又參考 A | 抽取共用介面至第三個專案 |