mam część kodu jak następuje:Kiedy należy utworzyć metodę rozszerzenia?
public class ActivityHelper
{
public void SetDate(IList<Activity> anActivityList)
{
foreach(Activity current in anActivityList)
{
current.Date = DateTime.Now;
}
}
//More methods, properties, fields, etc...
}
ten może być łatwo przekształca się w sposób wewnętrzny. Na przykład:
public static void SetDate(this IList<Activity> aList)
{
foreach(Activity current in anActivityList)
{
current.Date = DateTime.Now;
}
}
Oryginalny funkcja nie używa żadnych konkretnych danych lub metody instancji z klasy ActivityHelper co sprawia, że wydaje się, że jest w niewłaściwym miejscu. Czy jest to właściwy czas na napisanie metody rozszerzenia? Jakie są prawidłowe scenariusze tworzenia metod rozszerzenia?
Wydaje się, że pytasz niewłaściwe pytanie. To, czy uczynisz ją metodą rozszerzenia, czy nie, jest w dużej mierze nieważne. Ale powinieneś prawie na pewno uczynić ją metodą ** static ** w obu kierunkach. Twoja pierwsza metoda jest niestatyczna pomimo braku członków instancji; to jest (pomniejszy) projekt faux-pas. – Timwi
@ Timwi Tak, mogłem bardzo dobrze uczynić tę metodę statyczną i nie ma konkretnego powodu, dla którego nie zrobiłem tego w tym przykładzie. W każdym razie nadal uważam, że jest to metoda niezręczna. – brainimus
Metody znajdowania rozszerzeń są najlepiej używane, gdy zespół docelowy lub klasa jest "zamknięta dla aktualizacji". Uważam też, że ludzie niewłaściwie korzystają z metod przedłużania, aby ominąć zasadę odpowiedzialności pojedynczej (SRP - Single Responsibility Principle Principle). Moim zdaniem klasy statyczne i metody rozszerzeń są najbardziej niewłaściwie wykorzystywanymi możliwościami. –