Sicher. Sie können den Compilerfehler "Ambiguous Reference" erhalten, wenn zwei Objekte nicht unterschieden werden können. Normalerweise können Sie den vollständigen Pfad im Code angeben, was kein Problem verursacht. Wenn die DLLs jedoch vollständig identisch wären, könnten Sie in keiner Weise zwischen zwei Objekten unterscheiden. Sya wir haben zwei DLLs:
System.IO, das die File-Klasse enthält
und
MyProject.IO, das eine Dateiklasse enthält
Wenn Sie so etwas haben würden ...
using System.IO;
using MyProject.IO;
...
private void foo()
{
File f = new File();
}
... Sie hätten eine mehrdeutige Referenz, da es keine Möglichkeit gibt zu sagen, um welche Datei es sich handelt. Dies würde es beheben:
using System.IO;
using MyProject.IO;
...
private void foo()
{
MyProject.IO.File f = new MyProject.IO.File();
}
Die einzige Möglichkeit, dies zu beheben, wäre, wenn der Pfad von "File" in beiden Assemblys identisch wäre. Dies würde jedoch die unwahrscheinliche Situation erfordern, in der zwei DLLs eine identische Namespace-Struktur hatten. Zum Beispiel würde meine obige Situation niemals eintreten, da dort niemand das Projekt "System" nennen wird (mit Ausnahme der tatsächlichen Entwickler des .Net-Frameworks).