. jak .NET

Blog by Maciej "Procent" Aniserowicz

W dobie tak potężnych narzędzi jak Visual Studio programiści często zdają się całkowicie na ich funkcjonalność. Jedną z (wspaniałych zresztą) cech współczesnych IDE jest Intellisense. Czy wyobraża ktoś sobie pisanie kodu bez podpowiedzi? Zobaczmy jednak, że nie zawsze można na tym elemencie polegać w 100% ze względu na "konfigurowalność" nawet tego mechanizmu VS.
Dla przykładu załóżmy dwie solucje (w C# nie wystarczą 2 osobne projekty w jednej solucji, w innych językach nie sprawdzałem): ClassLibrary1 oraz ConsoleApplication1. Dodajmy referencję CL1 do CA1. W CL1 stwórzmy klasę Class1 takiej postaci:

 1:   public class Class1
2: {
3: public void HideMe()
4: {
5: }
6: }

Gdy teraz w aplikacji konsolowej będziemy chcieli wykorzystać metodę HideMe - efekt jest znany:

Wystarczy jednak mała modyfikacja ze strony programisty udostępnianej biblioteki:

 1:   public class Class1
2: {
3: [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
4: public void HideMe()
5: {
6: }
7: }

i mamy publiczną metodę niewidoczną w Intellisense!

Jeżeli zatem tworzymy jakiś komponent i pewne jego składowe muszą być publicznie dostępne, a jednocześnie nie chcemy aby lista Intellisense przyprawiła korzystającego z niego programistę o zawrót głowy - oto nasze rozwiązanie.
Ale uwaga - "use with care"; niebezpodstawne będzie chyba założenie, że wsród programistów można spodziewać się reakcji "jeżeli czegoś nie ma w Intellisense to to nie istnieje". Zupełnie jak w polityce - jeżeli nie ma strajków to znaczy że "żyje się lepiej. Wszystkim."


Komentarze

quetzalcoatl

24 czerwca 2008 13:55

przy okazji proponuje zapoznac sie z wycinkami informacji w temacie forum.4programmers.net/viewtopic.php

Andrzej Stolarczyk

24 lipca 2009 01:06

Otóż to. Sam zawsze sprawdzam czy po . mam coś do wyboru, jeśli nie to wiem, że coś skopałem ;) Jakoś nie widzę sensu żeby ukrywać coś w Intellisense bo późniem sam moge się na to nabrać.

Andrzej Stolarczyk

24 lipca 2009 01:07

później*

dotnetomaniak.pl

10 listopada 2009 06:56

Trackback from dotnetomaniak.pl

Gra w chowanego z Intellisense

andrzej

17 listopada 2009 12:40

Ja równiez nie widziałem sensu ukrywania, ale dziś go znalazłem.
Oznaczałem jedną ze starych metod, przepisanych na nową wersję, jako obsolete.

Przypomniałem sobie o tym poście i postanowiłem ją ukryć - by nie kusiła, dopóki nie wyleci z biblioteki.
Co jednak zauważyłem - metoda była statyczna i nadanie tego atrybutu nie spowodowało ukrycie jej w intellisense.. Albo coś źle zrobiłem ;)

Dodaj komentarz


 

[b][/b] - [i][/i] - [u][/u] - [quote][/quote] - [code][/code]