Когда должен мы использовать extern alias
ключевое слово в C#?
По сути, он вам действительно нужен только тогда, когда вы хотите использовать два типа с одним и тем же полным именем (одно и то же пространство имен, одно и то же имя типа) из разных сборок. Вы объявляете разные псевдонимы для каждой сборки, чтобы затем ссылаться на них через этот псевдоним.
Излишне говорить, что вам следует избегать попадания в такую ситуацию для начала:)
Он нужен, чтобы помочь вам выбраться из очень глубокой ямы, вырытой с помощью управления версиями. Допустим, ваша первая версия вашей программы использует этот класс
using System;
namespace Acme.Financial.Banking {
[Serializable]
public class BankAccount {
public double Balance { get; set; }
//...
}
}
, и вы сериализовали с его помощью множество записей о банковских счетах. А бухгалтер начинает жаловаться на то, что баланс отклоняется на миллиардную долю пенни, поэтому вы меняете класс:
public decimal Balance { get; set; }
Проблема решена, у следующего покупателя балансы счастливы. Пока вас не попросят обновить существующего клиента с большим количеством сериализованных записей в старом формате. Большая проблема, вы больше не можете десериализовать записи, так как класс изменился.
Псевдоним extern решает вашу проблему, вы можете ссылаться как на старую версию, так и на новую версию класса в своем коде, даже если имена пространств имен и имена классов совпадают.