Когда мы должны использовать ключевое слово extern alias в C #? - PullRequest
31 голосов
/ 27 февраля 2010

Когда мы должны использовать ключевое слово extern alias в C #?

Ответы [ 2 ]

29 голосов
/ 27 февраля 2010

Это поможет вам вытащить себя из действительно глубокой ямы, вырытой версионностью. Скажем, ваша первая версия вашей программы использует этот класс

using System;

namespace Acme.Financial.Banking {
  [Serializable]
  public class BankAccount {
    public double Balance { get; set; }
    //...
  }
}

И с ним вы сериализовали множество записей банковских счетов. А бухгалтер начинает жаловаться на то, что на балансе нет ни одной миллиардной копейки, поэтому вы меняете класс:

  public decimal Balance { get; set; }

Проблема решена, у следующего клиента счастливые балансы. Пока вас не попросят обновить существующего клиента множеством сериализованных записей в старом формате. Большая проблема, вы не можете десериализовать записи больше, так как класс изменился.

extern alias решает вашу проблему, вы можете ссылаться как на старую версию, так и на новую версию класса в вашем коде, даже если имена пространств имен и классов совпадают.

29 голосов
/ 27 февраля 2010

В основном это действительно нужно, только если вы хотите использовать два типа с одинаковым полностью определенным именем (одно и то же пространство имен, одно и то же имя типа) из разных сборок. Вы объявляете разные псевдонимы для каждой сборки, поэтому вы можете ссылаться на них через этот псевдоним.

Само собой разумеется, вы должны избегать попадания в эту ситуацию, чтобы начать с:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...