CLR如何在运行时区分不同程序集中具有相同名称但没有名称空间的类?
例子 :
组装:组装1
public class Foo
{
public void Test()
{
Console.WriteLine("Assembly 1 class Foo");
}
}
请注意,类Foo没有任何名称空间。
组装:Assembly2
public class Foo
{
public void Test()
{
Console.WriteLine("Assembly 2 class Foo");
}
}
请注意,类Foo在这里也没有任何名称空间。
因此,Assembly1和Assembly2的类具有相同的名称,但没有名称空间。
程序集:TestAssembly1 ---->引用:程序集1
namespace TestAssembly1
{
public class TestAssembly1Class
{
public void CallFooMethod()
{
new Foo().Test(); //How CLR would know this Foo is from Assembly 1 at runtime?
}
}
}
程序集:TestAssembly2 ---------->引用:程序集2
namespace TestAssembly2
{
public class TestAssembly2Class
{
public void CallFooMethod()
{
new Foo().Test(); //How CLR would know this Foo is from Assembly 2 at runtime?
}
}
}
现在假设有一个可执行文件,说MyShell.exe,它具有Main方法。如下所示。
class Program
{
static void Main(string[] args)
{
new TestAssembly1Class().CallFooMethod();
new TestAssembly2Class().CallFooMethod();
}
}
因此,这里的问题是,两个Foo类都没有任何名称空间,那么在执行MyShell.exe时CLR如何区分这些冲突的Foo类?
CLR如何在运行时区分不同程序集中具有相同名称但没有名称空间的类?
两种类型会有不同的 AssemblyQualifiedName
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句