Programiści .NET nieustannie widzą taki o to zestaw namespace’ów w swoich klasach:
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks;
Lub ewentualnie taki:
using System; using System.Collections.Generic; using System.Text;
Są one dodawane automatycznie za każdym razem, gdy jest tworzona klasa C# z poziomu Visual Studio. W zależności od wersji platformy .NET wygenerowany zostanie odpowiedni szablon (nowej klasy) z domyślnie ustalonymi przestrzeniami nazw. Dodawane są te namespace’y, które uważane są za najbardziej popularne. Tylko, że nie są one dodawane przez nas, a narzucane z góry.
A co jeżeli chcielibyśmy to zmienić? Czy można dodać swoje przestrzenie nazw, a może w ogóle się ich pozbyć?
Zmiana szablonu
Aby je zmienić należy zmodyfikować szablon, na podstawie którego zostaje wygenerowana klasa. W zależności od posiadanej przez nas wersji Visual Studio, może znajdować się on w innym katalogu, ale na ogół są one bardzo podobne. Dla Vs 2019 w wersji Community jest to:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class
W katalogu znajdują się dwa pliki: Class.cs, w którym można zmienić szablon klasy, oraz metadane XML do szablonu w pliku Class.vstemplate.
Otwieramy plik cs, a w nim znajduje się:
using System; using System.Collections.Generic; $if$ ($targetframeworkversion$ >= 3.5)using System.Linq; $endif$using System.Text; $if$ ($targetframeworkversion$ >= 4.5)using System.Threading.Tasks; $endif$ namespace $rootnamespace$ { class $safeitemrootname$ { } }
Jakiekolwiek modyfikacje, na tym pliku spowodują, że inaczej zostanie wygenerowana nowa klasa. Powiedzmy, że zostawimy tylko namespace, z Linq, bez zdefiniowanej wersji. Plik Class.cs wygląda teraz tak:
using System.Linq; namespace $rootnamespace$ { class $safeitemrootname$ { } }
Od teraz każda wygenerowana klasa w dowolnym projekcie będzie oparta na powyższym template’cie:
using System.Linq; namespace ConsoleApp1 { class Class2 { } }
Podsumowanie
Materiał ma charakter ciekawostki. Visual Studio łatwo radzi sobie z podpowiadaniem i przypisywaniem namespace’ów, do odpowiednich elementów. Jednak, żeby to zrobił, bez żadnych dodatkowych wtyczek, należy wpisać dokładną i pełną nazwę np. metody, bądź klasy. Przestrzeni nazw nie powinno być dużo, a najlepiej gdyby były jedynie te używane w danym pliku. Usuwaniem niepotrzebnych namepspace’ów zajmują się inne narzędzia np. Power Toolsy.
Wykorzystywanie template’ów może się przydać w innych sytuacjach, ale o tym napisze w następnych materiałach.