2009-08-28 14 views
16

Z przyzwyczajenia Mam tendencję do umieszczania klas/struktur/wyliczeń w oddzielnych plikach, gdy nie są zagnieżdżone.Gdzie mogę umieścić moją deklarację delegata C# w swoim pliku?

Dla delegatów, wydaje się przesadą, aby utworzyć plik oddzielna dla jednej wkładki:

public delegate string MyDelegateThatIsNotNestedInAnyClass (string par); 

I zazwyczaj dodać go do dołu najściślej związanej pliku klasy. Zastanawiam się tylko, co robią inni ludzie?

Odpowiedz

1

Zazwyczaj wystarczy użyć:

Func<string, string> 

te dni

+0

Chociaż zgadzam się, że ten delegat generyczny nie wymaga dużej ilości pracy od deklarowania własnych delegatów (ponieważ może pomieścić wielu z nich), to tak naprawdę nie jest to odpowiedź na jego pytanie, więc nie mogę przegłosować. –

+0

Przysięgam, że jestem jedyną osobą, która w rzeczywistości odrzuca nieistotne odpowiedzi. – jfar

+0

@jfar: Czy zdajesz sobie sprawę, że przypominasz Victor Creed (znany też jako Sabertooth) z X Men Origins: Wolverine? –

2

I zazwyczaj dodać go do pliku .cs klasy, która realizuje funkcję delegata (na poziomie przestrzeni nazw). Jeśli jest ich kilka, umieszczam je w oddzielnym pliku.

Jeśli wiem na pewno, że tylko jedna klasa implementuje funkcję delegata, zagnieżdżam ją w klasie implementującej.

1

Osobiście dodać go przed ściśle związane definicji klasy . Dobrze wykorzystuję przestrzenie nazw, więc nie zanieczyszczam!

1

Jeśli jest wystarczająco blisko spokrewniony, aby należeć do tego samego pliku co klasa, możesz prawdopodobnie uzasadnić umieszczenie go w klasie. Wtedy nie będziesz miał problemu z zapamiętaniem, który plik klasowy jest zapisany.

Jeśli nie ma jednej klasy, która jest oczywistym wyborem do zagnieżdżenia się, utworzenie pliku jednoliniowego jest prawdopodobnie opłacalne, ponieważ nigdy nie będziesz tracić czasu na zapamiętanie który plik klasowy zdecydowałeś umieścić.

1

Zawsze deklaruję własne wydarzenia, nawet jeśli nie potrzebuję ich, aby wystarczyło ogólne wydarzenie. Powodem tego jest to, że nazwa klasy zdarzenia nadaje kodowi większą czytelność, a także, że rzadko zdarza się, że zadeklarowane wydarzenie będzie potrzebne w dalszej części trasy z jakiegoś powodu. Ponieważ mam klasę zdarzeń, zawsze umieszczam delegata powyżej deklaracji klasy zdarzenia. Są ściśle ze sobą powiązane i jeśli chcesz posłuchać wydarzenia, będziesz potrzebować zarówno wydarzenia, jak i delegata. Nie wiem, czy to narusza jakieś zasady projektowania, ale to mi się udało.

Powiązane problemy