gpt4 book ai didi

c# - CLR 如何在运行时区分不同程序集中同名但没有命名空间的类?

转载 作者:行者123 更新时间:2023-12-04 16:54:55 25 4
gpt4 key购买 nike

CLR 如何在运行时区分不同程序集中同名但没有命名空间的类?

例子 :

组装 : 组装 1

public class Foo
{
public void Test()
{
Console.WriteLine("Assembly 1 class Foo");
}
}

请注意 Foo 类没有任何命名空间。

组装 : 组装 2
public class Foo
{
public void Test()
{
Console.WriteLine("Assembly 2 class Foo");
}
}

请注意,Foo 类在这里也没有任何命名空间。

因此,Assembly1 和Assembly2 具有同名但没有命名空间的类。

组装:TestAssembly1 ---->引用:Assembly1
namespace TestAssembly1 
{
public class TestAssembly1Class
{
public void CallFooMethod()
{
new Foo().Test(); //How CLR would know this Foo is from Assembly 1 at runtime?
}
}
}

装配:TestAssembly2----------->引用:Assembly2
namespace TestAssembly2 
{
public class TestAssembly2Class
{
public void CallFooMethod()
{
new Foo().Test(); //How CLR would know this Foo is from Assembly 2 at runtime?
}
}
}

现在假设有一个 Executable 说 MyShell.exe 有 Main 方法。看起来像以下。
 class Program
{
static void Main(string[] args)
{
new TestAssembly1Class().CallFooMethod();
new TestAssembly2Class().CallFooMethod();
}
}

所以这里的问题是,两个 Foo 类都没有任何命名空间,那么当 MyShell.exe 被执行时,CLR 将如何区分这些冲突的 Foo 类?

最佳答案

How does CLR differentiate classes with the same name but without namespace in different assemblies at runtime?



两种类型都有不同的 AssemblyQualifiedName

关于c# - CLR 如何在运行时区分不同程序集中同名但没有命名空间的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20572414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com