2013-08-02 2 views
15

У меня есть третья сторона DLL (написана в C#)Как вызвать статический метод в PowerShell

То есть класс с именем DBConnection и статический метод Connect Когда я называю этот метод из моего приложения # консольного C, как показано ниже это будет работа хорошо.

DataPackage.Db.DBConnection.Connect() 

Далее я попытался сделать то же самое, используя powershell.

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

Но это дает мне ошибку

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

Что является причиной этого и как это исправить ??

+1

Это может быть полезно, чтобы сказать нам, что библиотека третья сторона и указывают нам на какой-либо документации по классу/методу. – jpmc26

+0

ошибка выше указывает на то, что connect() необходимо вызывать из экземпляра класса, поэтому простой x = новый объект [DataPackage.Db.DBConnection] или аналогичный, за которым следует x.connect(), разрешит это , :) – GMasucci

ответ

1

Это не проблема с PowerShell как таковой, потому что ваш метод действительно прав. По-видимому, сам метод пытается разыменовать null. Возможно, сначала нужно вызвать другие методы или, возможно, установить статическое свойство.

+0

Есть ли способ исправить это или определить, что является фактической причиной.? – Sonali

+0

Смотря в коде, я думаю, то есть разобрав его. Я все еще пытаюсь понять, почему это не будет вызвано на C#, по-видимому – Joey

13

Ненавижу отказываться от ответа без ссылки за пределами личного опыта, но я никогда не нашел объяснения этого поведения, поэтому извините, что это не более информативно.

При вызове метода без параметров вы можете отключить парсеры. Так для примера сделать:

[DataPackage.Db.DBConnection]::Connect 

вместо ... Connect()

Смежные вопросы