2010-07-11 3 views
1

몇 가지 생성자가있는 COM 개체가 있습니다. 새 인스턴스를 만들고 powershell 2.0을 사용하여 생성자에 매개 변수를 전달하려고합니다. 그러나이 오류가 발생합니다. 지정한 명명 된 매개 변수를 사용하여 매개 변수 집합을 확인할 수 없습니다.powerhsell을 사용하여 매개 변수를 사용하여 새 com 객체를 만드는 방법은 무엇입니까?

이 코드입니다 :

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

이 코드는 작동하지 않습니다! 도움이 되었습니까?

답변

1

COM 생성자의 개념이 없습니다. 그것은 초 순수한 인터페이스 기반 프로그래밍 스타일을 따르고 구현은 항상 숨겨져 있으며 인터페이스 만 사용합니다. 인터페이스는 언어 런타임에서 이식하기가 매우 쉽고 구현이 쉽지 않습니다. COM을 구현하는 많은 언어에는 생성자에 대한 개념이 없으며 OOP 개념입니다.

COM 개체는 CoCreateInstance() API 함수로 만들어지며 COM 개체에 대해서는 표준 factory method입니다. 실제 클래스 팩토리에 인수를 전달하여 생성자에 인수를 전달하는 데 사용할 수있는 방법이 없습니다. 실제 팩토리는 IClassFactory 인터페이스 구현이며, 하이퍼 순수한 스타일입니다.

많은 언어가 COM 클라이언트 (예 : .NET의 [ComVisible] 특성)에서 클래스를 볼 수 있도록 지원하지만 매개 변수가없는 생성자 만 호출됩니다. 필연적으로 그렇게.

인자를 취하는 팩토리 메소드가 필요한 경우 직접 작성하십시오. 자신의 팩토리 인터페이스를 구현하십시오. Create() 메서드에 전달할 수있는 인수에 대한 제한이 없으며 생성자에 전달하는 방법은 보이지 않는 구현 세부 사항입니다.

관련 문제