当添加程序集引用时,可能会造成某种类型冲突,即你的应用程序在另一个程序集中定义的一个类型有相同的命名,怎么办?(关键字:C#2.0 、别名、extern alias、::) .
http://blog.csdn.net/lovecady/article/details/2562026
当添加程序集引用时,可能会造成某种类型冲突,即你的应用程序在另一个程序集中定义的一个类型有相同的命名,那么你就要为引用添加别名。
当你为程序集添加别名时,在该程序集中使用过的命名空间将在别名下,而不是在global下被解析。
要在一个程序集添加别名,首先在Visual Studio 2005中添加程序集的引用,然后,在解决方案管理器中打开“引用”文件夹,显示引用的程序集属性。
还需要修改代码:
- //由于为程序集引用添加别名,必须在程序的开始添加"extern alias"保留字
- extern alias MyClassLibraryAlias;
- using System;
- using System.Collections.Generic;
- using System.Text;
- //由于为程序集引用添加别名,所以在使用using时会报错。
- //using Animal;
- namespace program
- {
- class Program
- {
- static void Main(string[] args)
- {
- //注意:仅可通过别名来引用
- MyClassLibraryAlias::Animal .Animal.Cow myCow = new MyClassLibraryAlias .Animal .Animal .Cow();
- MyClassLibraryAlias::Animal.Animal.Chicken myChicken = new MyClassLibraryAlias::Animal.Animal.Chicken();
- MyClassLibraryAlias::Animal.IMyAnimal animalInterface;
- animalInterface = myCow;
- animalInterface.EatFood();
- animalInterface = myChicken;
- animalInterface.EatFood();
- myCow.EatFood();
- }
- }
- }
//由于为程序集引用添加别名,必须在程序的开始添加"extern alias"保留字 extern alias MyClassLibraryAlias; using System; using System.Collections.Generic; using System.Text; //由于为程序集引用添加别名,所以在使用using时会报错。 //using Animal; namespace program { class Program { static void Main(string[] args) { //注意:仅可通过别名来引用 MyClassLibraryAlias::Animal .Animal.Cow myCow = new MyClassLibraryAlias .Animal .Animal .Cow(); MyClassLibraryAlias::Animal.Animal.Chicken myChicken = new MyClassLibraryAlias::Animal.Animal.Chicken(); MyClassLibraryAlias::Animal.IMyAnimal animalInterface; animalInterface = myCow; animalInterface.EatFood(); animalInterface = myChicken; animalInterface.EatFood(); myCow.EatFood(); } } }
- 使用别名和完全限定的命名空间可能导致过长的代码行。为了速记,你也可以为完全限定名添加
使用别名和完全限定的命名空间可能导致过长的代码行。为了速记,你也可以为完全限定名添加
- //由于为程序集引用添加别名,必须在程序的开始添加"extern alias"保留字
- extern alias MyClassLibraryAlias;
- using System;
- using System.Collections.Generic;
- using System.Text;
- //由于为程序集引用添加别名,所以在使用using时会报错。
- //using Animal;
- //使用别名和完全限定的命名空间可能导致过长的代码行。为了速记,你也可以为完全限定名添加别名
- using MyLibrary = MyClassLibraryAlias::Animal;
- namespace program
- {
- class Program
- {
- static void Main(string[] args)
- {
- //注意:仅可通过别名来引用
- MyClassLibraryAlias::Animal .Animal.Cow myCow = new MyClassLibraryAlias .Animal .Animal .Cow();
- //为完全限定名添加别名后
- MyLibrary.Animal.Chicken myChicken = new MyLibrary.Animal.Chicken();
- MyClassLibraryAlias::Animal.IMyAnimal animalInterface;
- animalInterface = myCow;
- animalInterface.EatFood();
- animalInterface = myChicken;
- animalInterface.EatFood();
- myCow.EatFood();
- }
- }
- }