ExtensibleClassFactory 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
만드는 동안 관리되지 않는 개체에서 확장되는 관리되는 개체를 사용자 지정할 수 있습니다.
public ref class ExtensibleClassFactory sealed
public sealed class ExtensibleClassFactory
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ExtensibleClassFactory
type ExtensibleClassFactory = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type ExtensibleClassFactory = class
Public NotInheritable Class ExtensibleClassFactory
- 상속
-
ExtensibleClassFactory
- 특성
예제
등록을 delegate
집계 관리 되지 않는 개체를 할당 해야 하는 관리 되지 않는 형식에서 확장 하는 관리 되는 형식 인스턴스의 때마다 호출 되는 합니다. 이렇게 delegate
할당 하 고 관리 되지 않는 개체를 집계 해야 하 고 대신 라고는 CoCreateInstance
합니다. 이 루틴의 컨텍스트에서 호출 해야 합니다는 static
콜백을 수행 될 클래스에 대 한 이니셜라이저입니다.
public ref class CallBack
{
public:
IntPtr Activate( IntPtr Aggregator )
{
ECFSRV32Lib::ObjectActivator^ oCOM = gcnew ECFSRV32Lib::ObjectActivator;
ECFSRV32Lib::IObjectActivator^ itf = dynamic_cast<ECFSRV32Lib::IObjectActivator^>(oCOM);
return (IntPtr)itf->CreateBaseComponent( (int)Aggregator );
}
};
//
// The EcfInner class. First .NET class derived directly from COM class.
//
public ref class EcfInner: public ECFSRV32Lib::BaseComponent
{
private:
static CallBack^ callbackInner;
static void RegisterInner()
{
callbackInner = gcnew CallBack;
System::Runtime::InteropServices::ExtensibleClassFactory::RegisterObjectCreationCallback( gcnew System::Runtime::InteropServices::ObjectCreationDelegate( callbackInner, &CallBack::Activate ) );
}
//This is the static initializer.
static EcfInner()
{
RegisterInner();
}
};
using System;
using System.Runtime.InteropServices;
public class CallBack
{
public IntPtr Activate(IntPtr Aggregator)
{
ECFSRV32Lib.ObjectActivator oCOM = new ECFSRV32Lib.ObjectActivator();
ECFSRV32Lib.IObjectActivator itf = (ECFSRV32Lib.IObjectActivator)oCOM;
return (IntPtr) itf.CreateBaseComponent((int)Aggregator);
}
}
//
// The EcfInner class. First .NET class derived directly from COM class.
//
public class EcfInner : ECFSRV32Lib.BaseComponent
{
static CallBack callbackInner;
static void RegisterInner()
{
callbackInner = new CallBack();
System.Runtime.InteropServices.ExtensibleClassFactory.RegisterObjectCreationCallback(new System.Runtime.InteropServices.ObjectCreationDelegate(callbackInner.Activate));
}
//This is the static initializer.
static EcfInner()
{
RegisterInner();
}
}
Imports System.Runtime.InteropServices
Public Class CallBack
Public Function Activate(Aggregator As IntPtr) As IntPtr
Dim oCOM As New ECFSRV32Lib.ObjectActivator()
Dim itf As ECFSRV32Lib.IObjectActivator = _
CType(oCOM, ECFSRV32Lib.IObjectActivator)
Return New IntPtr(itf.CreateBaseComponent(Aggregator.ToInt32()))
End Function
End Class
'
' The EcfInner class. First .NET class derived directly from COM class.
'
Public Class EcfInner
Inherits ECFSRV32Lib.BaseComponent
Private Shared callbackInner As CallBack
Shared Sub RegisterInner()
callbackInner = New CallBack()
ExtensibleClassFactory.RegisterObjectCreationCallback( _
New System.Runtime.InteropServices.ObjectCreationDelegate( _
AddressOf callbackInner.Activate))
End Sub
'This is the static initializer.
Shared Sub New()
RegisterInner()
End Sub
End Class
설명
합니다 ExtensibleClassFactory
지정할 수 있습니다는 delegate
는 런타임 호출 가능 래퍼 (RCW) 기본 COM 개체의 인스턴스를 제공 하는 생성 하는 동안 호출 되는 합니다. 실제로 콜백 RCW 래핑된 COM 개체에 대 한 클래스 팩터리로 작동 합니다. 콜백이 없는 공용 언어 런타임을 호출 하 여 기본 COM 개체를 만듭니다 CoCreateInstance
합니다. 이 콜백은 COM 모니커 또는 단일 개체를 제공 하 여 같은 내부 개체를 활성화 하는 대체 방법을 제공 합니다. 합니다 RegisterObjectCreationCallback 메서드를 호출 해야 합니다 static
이니셜라이저는 RCW를 확장 하는 클래스의 합니다. 개체 유형별 개체를 하나만 생성 콜백에서 허용 됩니다. 확장할 수 있는 RCW가 활성화 되 면 콜백을 등록 됩니다. 기본 COM 개체를 만들 수 해야 하는 경우 콜백 개체에 대 한 참조를 제공 하 라고 합니다. 콜백 반환 해야 합니다는 IUnknown
기준 개체에 대 한 인터페이스 포인터입니다.
메서드
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
RegisterObjectCreationCallback(ObjectCreationDelegate) |
관리되지 않는 형식에서 확장된 관리되는 형식의 인스턴스가 집계된 관리되지 않는 개체를 할당해야 할 때마다 호출될 |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
적용 대상
.NET