【发布时间】:2011-01-21 18:43:54
【问题描述】:
我们什么时候必须在 C# 中使用extern alias 关键字?
【问题讨论】:
我们什么时候必须在 C# 中使用extern alias 关键字?
【问题讨论】:
基本上,当您想使用来自不同程序集的具有相同完全限定名称(相同命名空间、相同类型名称)的两种类型时,您才真正需要它。您为每个程序集声明一个不同的别名,然后您可以通过该别名引用它们。
不用说,你应该尽量避免陷入这种情况:)
【讨论】:
global 别名的程序集中搜索类和类型。我最终使用以 extern 别名开头的完全限定类型名称,例如我的外部别名声明是extern alias WidgetsVendor1;,但我仍在编写var wid = new WidgetsVendor1.Widgets.Widget();之类的代码。我不能简单地做-var wid = new Widgets.Widget();
using WidgetsVendor1.Widgets; 并写var wid = new Widget();。
using 关键字在 extern 别名中导入命名空间。谢谢。
它可以帮助您摆脱通过版本控制挖出的一个非常深的洞。假设你的程序的第一个版本使用了这个类
using System;
namespace Acme.Financial.Banking {
[Serializable]
public class BankAccount {
public double Balance { get; set; }
//...
}
}
您一直在用它序列化大量银行账户记录。一位会计师开始抱怨资产负债表减少了十亿分之一美分,所以你换了班:
public decimal Balance { get; set; }
问题解决了,下一位客户拥有满意的资产负债表。直到您被要求用旧格式的大量序列化记录升级现有客户。大问题,因为类已经改变,你不能再反序列化记录了。
extern alias 解决了你的问题,你可以在代码中引用旧版本和新版本的类,即使命名空间名称和类名相同。
【讨论】: