Assume we have two projects with different namespaces.
using Models = SharedClasses;
namespace MainAspNetMvcApplication{
private void Method1(){
var c = new Models.Cat();
//Error CS0234 The type or namespace name 'Cat' does not exist in the namespace 'MainAspNetMvcApplication.Models' (are you missing an assembly reference?)
}
}
namespace MainAspNetMvcApplication.Models{
//There is no class `Cat` in this namespace
public class Dog {
...
}
...
}
I have added reference to a SharedClasses
which contains following code.
namespace SharedClasses{
public class Cat{
//The code for shared classe (Cat)
}
}
This is more like to an ambiguous Models
error. However C# assumes current project Models
namespace and throws CS0234
error.
Why by default c# assume current project Models
namespace while I have mentioned to use Models
for SharedClasses
?
For me, the highest priority should be considered for using Models = SharedClasses;
Shouldn't at least C# let me know I have two ambiguous Models
instead of choosing one ?
Just curious why C# designed like this. While I'm looking for language designers to answer any other related answer is welcome.