2013-08-02 13 views
15

Mam strona trzecia DLL (napisany w C#)Jak wywołać metody statycznej PowerShell

To ma klasy o nazwie DBConnection i metodę statyczną o nazwie Connect Kiedy wywołanie tej metody z mojej aplikacji konsoli C# jak poniżej to będzie dobrze pracować.

DataPackage.Db.DBConnection.Connect() 

Następnie próbowałem zrobić to samo za pomocą programu Power Shell.

[DataPackage.Db.DBConnection]::Connect() 

Ale to daje mi błąd

Exception calling "Connect" with "0" argument(s): "Object reference not set to an instance of an object." 

Co jest tego przyczyną i jak to naprawić ??

+1

Może to być pomocne, aby powiedzieć nam, co biblioteka strona trzecia i skierować nas do jakiejkolwiek dokumentacji na klasy/metody. – jpmc26

+0

powyższy błąd wskazuje na fakt, że funkcja connect() musi zostać wywołana z instancji klasy, więc prosty x = nowy obiekt [DataPackage.Db.DBConnection] lub podobny, po którym następuje x.connect(), rozwiąże ten problem . :) – GMasucci

Odpowiedz

1

To nie jest problem z PowerShell per se, ponieważ wywołanie metody jest rzeczywiście poprawne. Najwyraźniej sama metoda próbuje gdzieś przeprowadzić dereferencję. Być może inne metody muszą zostać wywołane jako pierwsze, lub może gdzieś ustawiona własność statyczna.

+0

Czy istnieje sposób, aby to naprawić lub określić, jaka jest rzeczywista przyczyna.? – Sonali

+0

Patrząc w kod, myślę, tj. Demontując go. Nadal próbuję ti wymyślić sposób, dlaczego to nie będzie wywoływane w C#, widocznie – Joey

13

Nienawidzę odrzucać odpowiedzi bez odniesienia poza osobistym doświadczeniem, ale nigdy nie znalazłem wyjaśnienia dla tego zachowania, więc przykro mi, że nie jest to bardziej pouczające.

Wywołanie metody bez parametrów odstąpić od parens. Tak dla przykładu zrobić:

[DataPackage.Db.DBConnection]::Connect 

zamiast ... connect()

Powiązane problemy