메서드, 속성 및 이벤트 호출

업데이트: 2007년 11월

.NET 클라이언트에서는 활성 COM 개체에 대해 메서드를 호출하거나 해당 속성을 조정하거나 서버에서 발생한 이벤트를 catch할 수 있습니다. Loan coclass(관리되지않는 C++, ATL)는 이 단원의 코드 예제로 나오는 메서드 및 속성을 노출합니다.

메서드 호출

관리 코드에서 COM 개체에 대해 메서드를 호출하는 것은 관리 개체에 대해 메서드를 호출하는 것과 동일합니다. COM 구성 요소는 항상 인터페이스를 통해 기능을 노출하므로 COM coclass에서 직접 메서드를 호출하거나 인터페이스에서 메서드를 호출할 수 있습니다. coclass는 기본 인터페이스에서 노출한 멤버만을 노출합니다. 다음 코드 예제에서는 가져온 coclass에 대해 GetFirstPmtDistribution 메서드를 직접 호출합니다.

MorePmts = ln.GetFirstPmtDistribution(ln.Payment, Balance, _
               Principal, Interest)
MorePmts = ln.GetFirstPmtDistribution(ln.Payment, out Balance, 
               out Principal, out Interest);

데이터 형식은 COM interop에서 마샬링됩니다. 예를 들어, System.String 형식을 COM 개체에 전달하면, COM interop에서 이 형식을 BSTR로 변환합니다.

형식 라이브러리에 [out retval]로 표시된 매개 변수는 메서드 반환 값으로 변환되는데, 변환 프로세스에서 이들 매개 변수는 관리되는 서명에서 제거됩니다. 기본적으로 런타임에서는 실패 HRESULT를 동등한, 관리되는 예외에 매핑하여 관리 코드에 예외를 throw합니다.

속성 가져오기 및 설정

속성은 COM 인터페이스의 인터페이스 멤버가 될 수 있습니다. 관리되는 클래스에서 노출한 속성을 가져오거나 설정하는 것과 마찬가지로 COM 개체에서 노출한 속성을 가져오거나 설정할 수 있습니다. 어셈블리의 메타데이터로 가져온 COM 인터페이스 및 coclass는 각 속성에 대해 속성 및 접근자 메서드를 노출합니다. 다음 코드 예제에서는 OpeningBalance 속성을 설정합니다.

ln.OpeningBalance = Convert.ToDouble(Args(1))
ln.OpeningBalance = Convert.ToDouble(Args[0]);

속성 변환에 대한 자세한 내용은 가져온 멤버 변환을 참조하십시오. .NET Framework에서 사용되는 속성에 대한 일반적인 설명은 속성 개요를 참조하십시오.

이벤트 처리

.NET 클라이언트에서는 다른 모든 관리되는 이벤트를 처리하는 것과 마찬가지로 COM 서버에서 발생한 이벤트를 처리할 수 있습니다. 서버의 형식 라이브러리를 가져오면, 변환 프로세스에서는 이벤트 처리기에 연결되는 대리자를 만듭니다. 이 프로세스에 대한 자세한 내용은 COM 소스에서 발생한 이벤트 처리를 참조하십시오.

.NET 클라이언트 내에서 이벤트를 발생시키는 COM 개체는 가비지 수집기(GC) 컬렉션 두 개가 있어야 해제할 수 있습니다. 이것은 COM 개체와 관리되는 클라이언트 사이에 발생하는 참조 주기 때문입니다. COM 개체를 명시적으로 해제하려면 Collect 메서드를 두 번 호출해야 합니다.

참고 항목

작업

방법: HRESULT 및 예외 매핑

개념

관리 코드에서 COM 형식 사용

가져온 멤버 변환

속성 개요

COM Interop 샘플: .NET 클라이언트 및 COM 서버

기타 리소스

Interop 마샬링