CodeDomSerializer Klasse

Definition

Serialisiert ein Objektdiagramm in eine Reihe von CodeDOM-Anweisungen. Diese Klasse stellt eine abstrakte Basisklasse für einen Serialisierer bereit.

public ref class CodeDomSerializer abstract
public ref class CodeDomSerializer : System::ComponentModel::Design::Serialization::CodeDomSerializerBase
public abstract class CodeDomSerializer
public class CodeDomSerializer : System.ComponentModel.Design.Serialization.CodeDomSerializerBase
type CodeDomSerializer = class
type CodeDomSerializer = class
    inherit CodeDomSerializerBase
Public MustInherit Class CodeDomSerializer
Public Class CodeDomSerializer
Inherits CodeDomSerializerBase
Vererbung
CodeDomSerializer
Vererbung
CodeDomSerializer
Abgeleitet

Beispiele

Das folgende Codebeispiel veranschaulicht, wie ein benutzerdefinierter CodeDOM-Serializer erstellt wird, der von CodeDomSerializer.

#using <System.Drawing.dll>
#using <System.dll>
#using <System.Design.dll>

using namespace System;
using namespace System::CodeDom;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::ComponentModel::Design::Serialization;
using namespace System::Drawing;
using namespace System::Windows::Forms;

namespace CodeDomSerializerSample
{
   ref class MyComponent;
   private ref class MyCodeDomSerializer: public CodeDomSerializer
   {
   public:
      Object^ Deserialize( IDesignerSerializationManager^ manager, Object^ codeObject ) new
      {
         // This is how we associate the component with the serializer.
         CodeDomSerializer^ baseClassSerializer = (CodeDomSerializer^)(
            manager->GetSerializer(
               MyComponent::typeid->BaseType, CodeDomSerializer::typeid ));
         
         /* This is the simplest case, in which the class just calls the base class
            to do the work. */
         return baseClassSerializer->Deserialize( manager, codeObject );
      }

      Object^ Serialize( IDesignerSerializationManager^ manager, Object^ value ) new
      {
         /* Associate the component with the serializer in the same manner as with
            Deserialize */
         CodeDomSerializer^ baseClassSerializer = (CodeDomSerializer^)(
            manager->GetSerializer(
               MyComponent::typeid->BaseType, CodeDomSerializer::typeid ));

         Object^ codeObject = baseClassSerializer->Serialize( manager, value );
         
         /* Anything could be in the codeObject.  This sample operates on a
            CodeStatementCollection. */
         if ( (CodeStatementCollection^)(codeObject) )
         {
            CodeStatementCollection^ statements = (CodeStatementCollection^)(codeObject);
            
            // The code statement collection is valid, so add a comment.
            String^ commentText = "This comment was added to this object by a custom serializer.";
            CodeCommentStatement^ comment = gcnew CodeCommentStatement( commentText );
            statements->Insert( 0, comment );
         }
         return codeObject;
      }
   };

   [DesignerSerializer(CodeDomSerializerSample::MyCodeDomSerializer::typeid,
      CodeDomSerializer::typeid)]
   public ref class MyComponent: public Component
   {
   private:
      String^ localProperty;

   public:
      MyComponent()
      {
         localProperty = "Component Property Value";
      }

      property String^ LocalProperty 
      {
         String^ get()
         {
            return localProperty;
         }
         void set( String^ value )
         {
            localProperty = value;
         }
      }
   };
}
using System;
using System.CodeDom;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Drawing;
using System.Windows.Forms;
 
namespace CodeDomSerializerSample
{
    internal class MyCodeDomSerializer : CodeDomSerializer {
        public override object Deserialize(IDesignerSerializationManager manager, object codeObject) {
            // This is how we associate the component with the serializer.
                CodeDomSerializer baseClassSerializer = (CodeDomSerializer)manager.
                GetSerializer(typeof(MyComponent).BaseType, typeof(CodeDomSerializer));

            /* This is the simplest case, in which the class just calls the base class
                to do the work. */
            return baseClassSerializer.Deserialize(manager, codeObject);
        }
 
        public override object Serialize(IDesignerSerializationManager manager, object value) {
            /* Associate the component with the serializer in the same manner as with
                Deserialize */
            CodeDomSerializer baseClassSerializer = (CodeDomSerializer)manager.
                GetSerializer(typeof(MyComponent).BaseType, typeof(CodeDomSerializer));
 
            object codeObject = baseClassSerializer.Serialize(manager, value);
 
            /* Anything could be in the codeObject.  This sample operates on a
                CodeStatementCollection. */
            if (codeObject is CodeStatementCollection) {
                CodeStatementCollection statements = (CodeStatementCollection)codeObject;
 
                // The code statement collection is valid, so add a comment.
                string commentText = "This comment was added to this object by a custom serializer.";
                CodeCommentStatement comment = new CodeCommentStatement(commentText);
                statements.Insert(0, comment);
            }
            return codeObject;
        }
    }
 
    [DesignerSerializer(typeof(MyCodeDomSerializer), typeof(CodeDomSerializer))]
    public class MyComponent : Component {
        private string localProperty = "Component Property Value";
        public string LocalProperty {
            get {
                return localProperty;
            }
            set {
                localProperty = value;
            }
        }
    }
}
Imports System.CodeDom
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.ComponentModel.Design.Serialization
Imports System.Drawing
Imports System.Windows.Forms

Namespace CodeDomSerializerSample
   Friend Class MyCodeDomSerializer
      Inherits CodeDomSerializer

      Public Overrides Function Deserialize(ByVal manager As IDesignerSerializationManager, _
                                                ByVal codeObject As Object) As Object
         ' This is how we associate the component with the serializer.
         Dim baseClassSerializer As CodeDomSerializer = CType(manager.GetSerializer( _
                GetType(MyComponent).BaseType, GetType(CodeDomSerializer)), CodeDomSerializer)

         ' This is the simplest case, in which the class just calls the base class
         '  to do the work. 
         Return baseClassSerializer.Deserialize(manager, codeObject)
      End Function 'Deserialize

      Public Overrides Function Serialize(ByVal manager As IDesignerSerializationManager, _
                                            ByVal value As Object) As Object
         ' Associate the component with the serializer in the same manner as with
         '  Deserialize
         Dim baseClassSerializer As CodeDomSerializer = CType(manager.GetSerializer( _
                GetType(MyComponent).BaseType, GetType(CodeDomSerializer)), CodeDomSerializer)

         Dim codeObject As Object = baseClassSerializer.Serialize(manager, value)

         ' Anything could be in the codeObject.  This sample operates on a
         '  CodeStatementCollection.
         If TypeOf codeObject Is CodeStatementCollection Then
            Dim statements As CodeStatementCollection = CType(codeObject, CodeStatementCollection)

            ' The code statement collection is valid, so add a comment.
            Dim commentText As String = "This comment was added to this object by a custom serializer."
            Dim comment As New CodeCommentStatement(commentText)
            statements.Insert(0, comment)
         End If
         Return codeObject
      End Function 'Serialize
   End Class

   <DesignerSerializer(GetType(MyCodeDomSerializer), GetType(CodeDomSerializer))> _
   Public Class MyComponent
      Inherits Component
      Private localProperty As String = "Component Property Value"

      Public Property LocalProp() As String
         Get
            Return localProperty
         End Get
         Set(ByVal Value As String)
            localProperty = Value
         End Set
      End Property
   End Class

End Namespace

Hinweise

Sie können einen Benutzerdefinierten CodeDomSerializer implementieren, um die Generierung von Komponenteninitialisierungscode für einen Komponententyp zur Entwurfszeit zu steuern.

Um einen benutzerdefinierten CodeDomSerializer Typ zu implementieren, müssen Sie:

  1. Definieren Sie eine Klasse, die von CodeDomSerializer.

  2. Implementieren Sie Methodenüberschreibungen für Serialisierungs- oder Deserialisierungsmethoden. (Einzelheiten finden Sie in den nachstehenden Informationen.)

  3. Ordnen Sie Ihre benutzerdefinierte CodeDomSerializer Implementierung einem Komponententyp zu.DesignerSerializerAttribute

So implementieren Sie eine Serialisierungsmethode zum Generieren von Konfigurationscode für eine Komponente:

  1. Überschreiben Sie innerhalb einer Klasse, die von CodeDomSerializereiner klasse abgeleitet wird, eine entsprechende Serialisierungs- oder Deserialisierungsmethode der Basisklasse.

  2. Wenn sie möchten, dass der Standard serialisierer Codeanweisungen generiert, die die Standardkomponentenkonfiguration ausführen, müssen Sie den Basis serialisierer für die Komponente abrufen und aufrufen. Rufen Sie zum Abrufen des Basis-Serialisierungsprogramms für die Komponente die GetSerializer Methode der IDesignerSerializationManager an die Methodenüberschreibung übergebenen Methode auf. Übergeben Sie die Methode an den GetSerializer Typ der Komponente, um die Konfiguration zu serialisieren, zusammen mit dem Basistyp des serialisierer, den Sie anfordern. Dies ist CodeDomSerializer. Rufen Sie die Methode desselben Namens auf, den Sie für den Basis serialisierer überschreiben, und verwenden Sie dabei das IDesignerSerializationManager an die Methodenüberschreibung übergebene Objekt. Wenn Sie die Serialize Methode implementieren, gibt die Serialize Methode des Basis serialisierer ein Objekt zurück. Der Typ dieses Objekts hängt vom Typ des Basis serialisierer ab, der vom Typ der Komponente abhängt, von der Sie die Werte serialisieren. Wenn Sie die SerializeEventsMethode SerializePropertiesimplementieren SerializePropertiesToResources , müssen Sie ein neues CodeStatementCollection Erstellen, das die generierten Codeanweisungen enthält, und sie an die Methode übergeben.

  3. Wenn Sie eine Basis-Serialisierungsmethode aufgerufen haben, verfügen Sie über eine CodeStatementCollection Methode, die die zu generierenden Anweisungen enthält, um die Komponente zu initialisieren. Andernfalls sollten Sie eine CodeStatementCollection. Sie können dieser Auflistung Objekte hinzufügen CodeStatement , die Anweisungen darstellen, die im Komponentenkonfigurationscode generiert werden.

  4. Gibt den CodeStatementCollection Quellcode zurück, der generiert werden soll, um die Komponente zu konfigurieren.

Hinweise für Ausführende

Wenn Sie von CodeDomSerializerdieser Erbe erben, müssen Sie die folgenden Member außer Kraft setzen: Deserialize(IDesignerSerializationManager, Object) und Serialize(IDesignerSerializationManager, Object).

Konstruktoren

Name Beschreibung
CodeDomSerializer()

Initialisiert eine neue Instanz der CodeDomSerializer-Klasse.

Methoden

Name Beschreibung
Deserialize(IDesignerSerializationManager, Object)

Deserialisiert das angegebene serialisierte CodeDOM-Objekt in einem Objekt.

DeserializeExpression(IDesignerSerializationManager, String, CodeExpression)

Deserialisiert den angegebenen Ausdruck.

DeserializeExpression(IDesignerSerializationManager, String, CodeExpression)

Deserialisiert den angegebenen Ausdruck in ein Speicherobjekt.

(Geerbt von CodeDomSerializerBase)
DeserializeInstance(IDesignerSerializationManager, Type, Object[], String, Boolean)

Gibt eine Instanz des angegebenen Typs zurück.

(Geerbt von CodeDomSerializerBase)
DeserializePropertiesFromResources(IDesignerSerializationManager, Object, Attribute[])

Deserialisiert die Eigenschaften des angegebenen Objekts, die dem angegebenen Filter entsprechen, wenn ein Filter angegeben wurde.

DeserializePropertiesFromResources(IDesignerSerializationManager, Object, Attribute[])

Deserialisiert Eigenschaften für das angegebene Objekt aus dem Ressourcenbundle der invarianten Kultur.

(Geerbt von CodeDomSerializerBase)
DeserializeStatement(IDesignerSerializationManager, CodeStatement)

Deserialisiert die angegebene Anweisung.

DeserializeStatement(IDesignerSerializationManager, CodeStatement)

Deserialisiert eine Anweisung durch Interpretieren und Ausführen einer CodeDOM-Anweisung.

(Geerbt von CodeDomSerializerBase)
DeserializeStatementToInstance(IDesignerSerializationManager, CodeStatement)

Deserialisiert eine einzelne Anweisung.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetExpression(IDesignerSerializationManager, Object)

Gibt einen Ausdruck für das angegebene Objekt zurück.

(Geerbt von CodeDomSerializerBase)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetSerializer(IDesignerSerializationManager, Object)

Sucht einen Serialisierer für den angegebenen Objektwert.

(Geerbt von CodeDomSerializerBase)
GetSerializer(IDesignerSerializationManager, Type)

Sucht einen Serialisierer für den angegebenen Typ.

(Geerbt von CodeDomSerializerBase)
GetTargetComponentName(CodeStatement, CodeExpression, Type)

Bestimmt, zu welcher Anweisungsgruppe die angegebene Anweisung gehören soll.

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
GetUniqueName(IDesignerSerializationManager, Object)

Gibt einen eindeutigen Namen für das angegebene Objekt zurück.

(Geerbt von CodeDomSerializerBase)
IsSerialized(IDesignerSerializationManager, Object, Boolean)

Gibt einen Wert zurück, der angibt, ob das angegebene Objekt serialisiert wurde, optional unter Berücksichtigung voreingestellter Ausdrücke.

(Geerbt von CodeDomSerializerBase)
IsSerialized(IDesignerSerializationManager, Object)

Gibt einen Wert zurück, der angibt, ob das angegebene Objekt serialisiert wurde.

(Geerbt von CodeDomSerializerBase)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
Serialize(IDesignerSerializationManager, Object)

Serialisiert das angegebene Objekt in ein CodeDOM -Objekt.

SerializeAbsolute(IDesignerSerializationManager, Object)

Serialisiert das angegebene Objekt, wobei Standardwerte angegeben werden.

SerializeCreationExpression(IDesignerSerializationManager, Object, Boolean)

Gibt einen Ausdruck zurück, der die Erstellung des angegebenen Objekts darstellt.

(Geerbt von CodeDomSerializerBase)
SerializeEvent(IDesignerSerializationManager, CodeStatementCollection, Object, EventDescriptor)

Serialisiert das angegebene Ereignis in die angegebene Anweisungsauflistung.

(Geerbt von CodeDomSerializerBase)
SerializeEvents(IDesignerSerializationManager, CodeStatementCollection, Object, Attribute[])

Serialisiert alle Ereignisse des angegebenen Objekts.

SerializeEvents(IDesignerSerializationManager, CodeStatementCollection, Object, Attribute[])

Serialisiert die angegebenen Ereignisse in der angegebenen Anweisungsauflistung.

(Geerbt von CodeDomSerializerBase)
SerializeMember(IDesignerSerializationManager, Object, MemberDescriptor)

Serialisiert das angegebene Element für das angegebene Objekt.

SerializeMemberAbsolute(IDesignerSerializationManager, Object, MemberDescriptor)

Serialisiert das angegebene Element, wobei Standardwerte berechnet werden.

SerializeProperties(IDesignerSerializationManager, CodeStatementCollection, Object, Attribute[])

Serialisiert alle Eigenschaften für das angegebene Objekt mithilfe des angegebenen Filters.

SerializeProperties(IDesignerSerializationManager, CodeStatementCollection, Object, Attribute[])

Serialisiert die Eigenschaften für das angegebene Objekt in die angegebene Anweisungsauflistung.

(Geerbt von CodeDomSerializerBase)
SerializePropertiesToResources(IDesignerSerializationManager, CodeStatementCollection, Object, Attribute[])

Serialisiert die angegebenen Eigenschaften in Ressourcen.

SerializePropertiesToResources(IDesignerSerializationManager, CodeStatementCollection, Object, Attribute[])

Serialisiert die Eigenschaften für das angegebene Objekt in das Ressourcenbundle der invarianten Kultur.

(Geerbt von CodeDomSerializerBase)
SerializeProperty(IDesignerSerializationManager, CodeStatementCollection, Object, PropertyDescriptor)

Serialisiert eine Eigenschaft für das angegebene Objekt.

(Geerbt von CodeDomSerializerBase)
SerializeResource(IDesignerSerializationManager, String, Object)

Serialisiert das angegebene Objekt mithilfe des angegebenen Ressourcennamens in ein Ressourcenbundle.

SerializeResource(IDesignerSerializationManager, String, Object)

Serialisiert das angegebene Objekt mithilfe des angegebenen Ressourcennamens in ein Ressourcenbundle.

(Geerbt von CodeDomSerializerBase)
SerializeResourceInvariant(IDesignerSerializationManager, String, Object)

Serialisiert das angegebene Objekt in ein Ressourcenbundle unter Verwendung des angegebenen Ressourcennamens mit invarianter Kultur.

SerializeResourceInvariant(IDesignerSerializationManager, String, Object)

Serialisiert das angegebene Objekt mithilfe des angegebenen Ressourcennamens in ein Ressourcenbundle.

(Geerbt von CodeDomSerializerBase)
SerializeToExpression(IDesignerSerializationManager, Object)

Serialisiert den angegebenen Wert in einen CodeDOM-Ausdruck.

SerializeToExpression(IDesignerSerializationManager, Object)

Serialisiert das angegebene Objekt in einen Ausdruck.

(Geerbt von CodeDomSerializerBase)
SerializeToReferenceExpression(IDesignerSerializationManager, Object)
Veraltet.

Serialisiert den angegebenen Wert in einen CodeDOM-Ausdruck.

SerializeToResourceExpression(IDesignerSerializationManager, Object, Boolean)

Serialisiert das angegebene Objekt in einen Ausdruck, der für die invariante Kultur geeignet ist.

(Geerbt von CodeDomSerializerBase)
SerializeToResourceExpression(IDesignerSerializationManager, Object)

Serialisiert das angegebene Objekt in einen Ausdruck.

(Geerbt von CodeDomSerializerBase)
SetExpression(IDesignerSerializationManager, Object, CodeExpression, Boolean)

Ordnet ein Objekt einem Ausdruck zu, optional einen voreingestellten Ausdruck anzugeben.

(Geerbt von CodeDomSerializerBase)
SetExpression(IDesignerSerializationManager, Object, CodeExpression)

Ordnet ein Objekt einem Ausdruck zu.

(Geerbt von CodeDomSerializerBase)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Weitere Informationen