ExtensibleClassFactory Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Lehetővé teszi a felügyelt objektumok testreszabását, amelyek a létrehozás során nem felügyelt objektumoktól terjednek ki.
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
- Öröklődés
-
ExtensibleClassFactory
- Attribútumok
Példák
Regisztrálja delegate azokat a hívásokat, amelyek akkor lesznek meghívva, ha egy felügyelt típusú példánynak nem felügyelt típustól kell lefoglalnia az összesített nem felügyelt objektumot. Ez delegate várhatóan lefoglalja és összesíti a nem felügyelt objektumot, és egy CoCreateInstance. Ezt a rutint annak az osztálynak az static inicializálójának kontextusában kell meghívni, amelyre a visszahívások sor kerülnek.
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
Megjegyzések
Ez ExtensibleClassFactory lehetővé teszi a felhasználók számára, hogy megadják delegate a futásidejű, hívható burkoló (RCW) létrehozásakor meghívható burkolót, amely az alapul szolgáló COM-objektum egy példányát biztosítja. A visszahívás tulajdonképpen az RCW által burkolt COM-objektum osztály-előállítójaként működik. A visszahívás nélkül a közös nyelvi futtatókörnyezet hívással CoCreateInstancehozza létre a mögöttes COM-objektumot. Ez a visszahívás alternatív módot kínál a mögöttes objektum aktiválására, például com-monikerrel vagy egyetlenton objektum biztosításával. A RegisterObjectCreationCallback metódust az static RCW-t kiterjesztő osztály inicializálójában kell meghívni. Objektumtípusonként csak egy objektumlétrehozás-visszahívás engedélyezett. A bővíthető RCW aktiválása után a visszahívás regisztrálva lesz. Amikor létre kell hozni a mögöttes COM-objektumot, a rendszer meghívja a visszahívást, hogy hivatkozzon az objektumra. A visszahívásnak vissza kell adnia egy IUnknown interfészmutatót az alapobjektumhoz.
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| RegisterObjectCreationCallback(ObjectCreationDelegate) |
Regisztrálja |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |