2010-07-11 3 views
1

У меня есть COM-объект с несколькими конструкторами, я пытаюсь создать новый экземпляр и передать параметры конструктору с помощью powershell 2.0, но я получаю эту ошибку: набор параметров не может быть разрешен с использованием указанных именованных параметров.Как создать новый объект com с параметрами с помощью powerhsell?

Это код:

$paramsInfo = New-Object -ComObject 'MyObject.ObjectA' 
$comObj = New-Object -ComObject 'MyObject.ObjectB' -ArgumentList $paramsInfo 

Этот код не работает !!! Любая помощь?

ответ

1

COM не имеет понятия конструктора. Это следует за гипер-чистым интерфейсом программирования на основе сопряжения, реализация всегда скрыта, и вы только когда-либо работаете с интерфейсами. Интерфейсы очень просты в переносе между языковыми режимами, реализация никогда не выполняется. Многие языки, реализующие COM, не имеют понятия конструктора, это концепция ООП.

COM-объекты создаются с помощью функции API CoCreateInstance(), стандартного factory method для COM-объектов. Он не имеет возможности передавать какие-либо аргументы реальной фабрике классов, которые он мог бы использовать для передачи аргументов конструктору. Настоящей фабрикой является реализация интерфейса IClassFactory, сверхчистый стиль.

В то время как многие языки поддерживают отображение своих классов для COM-клиентов (например, атрибут .NET [ComVisible]), будет вызываться только их конструктор без параметров. Обязательно так.

Если вам нужен метод фабрики, который принимает аргументы, тогда просто напишите свой собственный. Внедрите свой собственный заводский интерфейс. Никакие ограничения на аргументы, которые вы можете передать методу Create(), как передать их конструктору, являются невидимой деталью реализации :)

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