我有两个不同的程序集:Assembly1
和Assembly2
。两个程序集使用相同的名称空间SoftwareDrivers
。现在,我有一个类的两个实现,它们具有相同的功能,只是不同的实现和依赖性将一个实现与Assembly1
绑定,另一个实现与Assembly2
绑定;我将此类称为PackageWriter
。
某些项目可能并且可能需要引用两个程序集,因此我预计在该情况下解决使用哪个PackageWriter
会有问题。是这样吗如果是这样,那么是在不更改项目结构的情况下更改PackageWriter
名称的唯一方法是解决此问题?c
答案 0 :(得分:1)
是的,他们可以。如果两个程序集都被引用,您将收到类似于以下的错误:
error CS0433: The type 'Testing' exists in both 'MyApp.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' and 'MyApp.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
请注意,您切勿有目的地陷入这种情况。但是,如果您出于某种原因而陷入困境,则必须处理以下情况:
每个程序集在.NET中都有一个“别名”,默认情况下为global
。对于程序员来说,这通常是不可见的。您可以通过单击引用并在“属性”中更改别名来更改别名。然后,您可以通过在文件顶部放置extern alias myalias
来引用它,并像这样myalias::MyApp.Testing
在运行2个版本的API或类似版本时,可能需要这样做,尽管我尽一切可能避免这样做。
有关更多详细信息,请参见this answer。
答案 1 :(得分:0)
如果它在同一个命名空间中,则否,除非您将其声明为partial
类