XmlNamespace и эстетика в Silverlight-коде

Просто о NET | создано: 03.12.2010 | опубликовано: 22.04.2014 | обновлено: 13.01.2024 | просмотров: 3853

В этой статье наведем "эстетический" порядок и красоту в коде, и в частности, в XAML-разметке.

Какой из видов Silverlight кода Вам больше всего нравится? Сравните два варианта.

1 вариант (обычный):

xmlns:clb="clr-namespace:Calabonga.Silverlight.Framework;assembly=Calabonga.Silverlight.Framework"

и 2 вариант (эстетичный)

xmlns:clb="http://schemas.calabonga.com"

Нет необходимости дискутировать по поводу удобства просмотра и отображения  кода. Безусловно, второй (эстетичный) вариант выглядит… эстетично (уж простите  за каламбур). Так вот, реализовать такой способ объявления namespace очень просто. Надо всего лишь в файле AssemblyInfo.cs проекта сборки дописать одну  строку.

У меня есть своя собственная сборка для реализации MVVM паттерна, которую я пользую для программирования в своих проектах. Буду ставить эксперименты на этой сборке. Итак, я открыл проект своей  библиотеки под названием Calabonga.Silverlight.Framework. Нашел  файл AssemblyInfo.cs и в самом низу (после всех директив) написал еще одну
директиву для компилятора:

[assembly: XmlnsDefinition("http://schemas.calabonga.com/", "Calabonga.Silverlight.Framework")]

Заметьте, что атрибут  AssemblyVersion  находится в пространстве имен System.Windows.Markup, значит необходимо добавить этот namespace в AccemblyInfo.cs. После этого мне осталось только откомпилировать проект и всё. Теперь во всех своих приложениях я могу использовать эстетичный код.

Хочу еще заметить, что если у Вас существует несколько namespace в одной сборке, то можно добавить несколько директив, например:

[assembly: XmlnsDefinition("http://schemas.calabonga.com/", "Calabonga.Silverlight.Controls")]
[assembly: XmlnsDefinition("http://schemas.calabonga.com/", "Calabonga.Silverlight.Framework")]
[assembly: XmlnsDefinition("http://schemas.calabonga.com/", "Calabonga.Silverlight.Data")]

Главное что это дает, так это универсальность. Трудно будет забыть как называется сборка, которую надо подключить.