Mam metodę w mojej aplikacji MVC, która tworzy plik PDF (pobiera obiekt z danymi do zapisu i ścieżki jako parametry). Napisałem metodę w oddzielnej klasie i zrobiłem to statyczne. W innej funkcji na moim kontrolce nazywam tę metodę:

PdfGenerator.GeneratePdfMethod("write this string", "path");

Teraz, jeśli zmienię tę metodę na nie statyczne, muszę zainstalować obiekt PDFGenerator, a następnie zadzwoń do funkcji na tym obiekcie:

PdfGenerator p = new PdfGenerator();
p.GeneratePdfMethod("write this string", "path");

Jak mogę uniknąć konieczności tworzenia tego obiektu, nie robiąc mojej metody statycznej? Jeśli jest nawet możliwy i wskazany?

1
sandi 27 marzec 2020, 13:21

1 odpowiedź

Najlepsza odpowiedź

Jak mogę uniknąć konieczności tworzenia tego obiektu, nie robiąc mojej metody statycznej? Jeśli jest to nawet możliwe ...?

Nie. Musisz utworzyć instancję klasy, zanim będziesz mógł uzyskać dostęp do dowolnego elementu, w tym metody GeneratePdfMethod.

Możesz to zrobić na jednej linii:

new PdfGenerator().GeneratePdfMethod("write this string", "path");

Gdy członek jest static, nie należy do określonej instancji, ale raczej dla samego typu.

Na odwrót, metoda niezwiązana statyczna należy do określonej instancji, co oznacza, że potrzebny jest odniesienie do tej konkretnej instancji, zanim będziesz mógł wywołać metodę.

Jeśli GeneratePdfMethod nie ma dostępu do żadnych danych instancji, powinno być jednak static.

2
mm8 27 marzec 2020, 10:43