ExtensibleClassFactory Osztály

Definíció

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 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.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

A következőre érvényes: