Share via


CodeDomSerializer Kelas

Definisi

Membuat serialisasi grafik objek ke serangkaian pernyataan CodeDOM. Kelas ini menyediakan kelas dasar abstrak untuk serializer.

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
Warisan
CodeDomSerializer
Warisan
CodeDomSerializer
Turunan

Contoh

Contoh kode berikut menggambarkan cara membuat serializer CodeDOM kustom yang berasal dari 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

Keterangan

Anda dapat menerapkan kustom CodeDomSerializer untuk mengontrol pembuatan kode inisialisasi komponen untuk jenis komponen pada waktu desain.

Untuk menerapkan kustom CodeDomSerializer untuk jenis, Anda harus:

  1. Tentukan kelas yang berasal dari CodeDomSerializer.

  2. Menerapkan penimpaan metode untuk metode serialisasi atau deserialisasi. (Lihat informasi di bawah ini untuk detailnya.)

  3. Kaitkan implementasi kustom CodeDomSerializer Anda dengan jenis komponen menggunakan DesignerSerializerAttribute.

Untuk menerapkan metode serialisasi untuk menghasilkan kode konfigurasi untuk komponen:

  1. Dalam kelas yang berasal dari CodeDomSerializer, mengambil alih metode serialisasi atau deserialisasi yang sesuai dari kelas dasar.

  2. Jika Anda ingin serializer default menghasilkan pernyataan kode yang melakukan konfigurasi komponen default, Anda harus mendapatkan dan memanggil serializer dasar untuk komponen. Untuk mendapatkan serializer dasar untuk komponen, panggil GetSerializer metode yang IDesignerSerializationManager diteruskan ke penimpaan metode Anda. Teruskan GetSerializer metode jenis komponen untuk membuat serialisasi konfigurasi, bersama dengan jenis dasar serializer yang Anda minta, yaitu CodeDomSerializer. Panggil metode dengan nama yang sama dengan yang Anda ambil alih pada serializer dasar, menggunakan objek dan yang IDesignerSerializationManager diteruskan ke penimpaan metode Anda. Jika Anda menerapkan Serialize metode , Serialize metode serializer dasar akan mengembalikan objek . Jenis objek ini tergantung pada jenis serializer dasar yang bergantung pada jenis komponen yang Anda serialisasikan nilainya. Jika Anda menerapkan SerializeEventsmetode , SerializeProperties, atau SerializePropertiesToResources , Anda harus membuat yang baru CodeStatementCollection untuk berisi pernyataan kode yang dihasilkan, dan meneruskannya ke metode .

  3. Jika Anda telah memanggil metode serializer dasar, Anda akan memiliki CodeStatementCollection yang berisi pernyataan yang akan dihasilkan untuk menginisialisasi komponen. Jika tidak, Anda harus membuat CodeStatementCollection. Anda dapat menambahkan CodeStatement objek yang mewakili pernyataan untuk dihasilkan dalam kode konfigurasi komponen ke koleksi ini.

  4. Kembalikan CodeStatementCollection yang mewakili kode sumber yang akan dihasilkan untuk mengonfigurasi komponen.

Catatan Bagi Implementer

Ketika Anda mewarisi dari CodeDomSerializer, Anda harus mengambil alih anggota berikut: Deserialize(IDesignerSerializationManager, Object) dan Serialize(IDesignerSerializationManager, Object).

Konstruktor

CodeDomSerializer()

Menginisialisasi instans baru kelas CodeDomSerializer.

Metode

Deserialize(IDesignerSerializationManager, Object)

Mendeserialisasi objek CodeDOM berseri yang ditentukan ke dalam objek.

DeserializeExpression(IDesignerSerializationManager, String, CodeExpression)

Mendeserialisasi ekspresi yang ditentukan.

DeserializeExpression(IDesignerSerializationManager, String, CodeExpression)

Mendeserialisasi ekspresi yang diberikan ke dalam objek dalam memori.

(Diperoleh dari CodeDomSerializerBase)
DeserializeInstance(IDesignerSerializationManager, Type, Object[], String, Boolean)

Mengembalikan instans dari jenis yang diberikan.

(Diperoleh dari CodeDomSerializerBase)
DeserializePropertiesFromResources(IDesignerSerializationManager, Object, Attribute[])

Mendeserialisasi properti objek yang ditentukan yang cocok dengan filter yang ditentukan, jika filter ditentukan.

DeserializePropertiesFromResources(IDesignerSerializationManager, Object, Attribute[])

Mendeserialisasi properti pada objek yang diberikan dari bundel sumber daya budaya invariant.

(Diperoleh dari CodeDomSerializerBase)
DeserializeStatement(IDesignerSerializationManager, CodeStatement)

Mendeserialisasi pernyataan yang ditentukan.

DeserializeStatement(IDesignerSerializationManager, CodeStatement)

Mendeserialisasi pernyataan dengan menafsirkan dan menjalankan pernyataan CodeDOM.

(Diperoleh dari CodeDomSerializerBase)
DeserializeStatementToInstance(IDesignerSerializationManager, CodeStatement)

Mendeserialisasi satu pernyataan.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetExpression(IDesignerSerializationManager, Object)

Mengembalikan ekspresi untuk objek yang diberikan.

(Diperoleh dari CodeDomSerializerBase)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetSerializer(IDesignerSerializationManager, Object)

Menemukan serializer untuk nilai objek yang diberikan.

(Diperoleh dari CodeDomSerializerBase)
GetSerializer(IDesignerSerializationManager, Type)

Menemukan serializer untuk jenis yang diberikan.

(Diperoleh dari CodeDomSerializerBase)
GetTargetComponentName(CodeStatement, CodeExpression, Type)

Menentukan grup pernyataan mana yang harus dimiliki oleh pernyataan yang diberikan.

GetType()

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
GetUniqueName(IDesignerSerializationManager, Object)

Mengembalikan nama unik untuk objek yang diberikan.

(Diperoleh dari CodeDomSerializerBase)
IsSerialized(IDesignerSerializationManager, Object)

Mengembalikan nilai yang menunjukkan apakah objek yang diberikan telah diserialisasikan.

(Diperoleh dari CodeDomSerializerBase)
IsSerialized(IDesignerSerializationManager, Object, Boolean)

Mengembalikan nilai yang menunjukkan apakah objek yang diberikan telah diserialisasikan, secara opsional mempertimbangkan ekspresi prasetel.

(Diperoleh dari CodeDomSerializerBase)
MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
Serialize(IDesignerSerializationManager, Object)

Menserialisasikan objek yang ditentukan ke dalam objek CodeDOM.

SerializeAbsolute(IDesignerSerializationManager, Object)

Menserialisasikan objek yang diberikan, akuntansi untuk nilai default.

SerializeCreationExpression(IDesignerSerializationManager, Object, Boolean)

Mengembalikan ekspresi yang mewakili pembuatan objek yang diberikan.

(Diperoleh dari CodeDomSerializerBase)
SerializeEvent(IDesignerSerializationManager, CodeStatementCollection, Object, EventDescriptor)

Menserialisasikan peristiwa yang diberikan ke dalam koleksi pernyataan yang diberikan.

(Diperoleh dari CodeDomSerializerBase)
SerializeEvents(IDesignerSerializationManager, CodeStatementCollection, Object, Attribute[])

Menserialisasikan semua peristiwa objek yang ditentukan.

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

Menserialisasikan peristiwa yang ditentukan ke dalam koleksi pernyataan yang diberikan.

(Diperoleh dari CodeDomSerializerBase)
SerializeMember(IDesignerSerializationManager, Object, MemberDescriptor)

Menserialisasikan anggota yang diberikan pada objek yang diberikan.

SerializeMemberAbsolute(IDesignerSerializationManager, Object, MemberDescriptor)

Menserialisasikan anggota yang diberikan, akuntansi untuk nilai default.

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

Menserialisasikan semua properti untuk objek yang ditentukan, menggunakan filter yang ditentukan.

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

Menserialisasikan properti pada objek yang diberikan ke dalam koleksi pernyataan yang diberikan.

(Diperoleh dari CodeDomSerializerBase)
SerializePropertiesToResources(IDesignerSerializationManager, CodeStatementCollection, Object, Attribute[])

Menserialisasikan properti yang ditentukan ke sumber daya.

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

Menserialisasikan properti pada objek yang diberikan ke dalam bundel sumber daya budaya invariant.

(Diperoleh dari CodeDomSerializerBase)
SerializeProperty(IDesignerSerializationManager, CodeStatementCollection, Object, PropertyDescriptor)

Menserialisasikan properti pada objek yang diberikan.

(Diperoleh dari CodeDomSerializerBase)
SerializeResource(IDesignerSerializationManager, String, Object)

Menserialisasikan objek yang diberikan ke dalam bundel sumber daya menggunakan nama sumber daya yang diberikan.

SerializeResource(IDesignerSerializationManager, String, Object)

Menserialisasikan objek yang diberikan ke dalam bundel sumber daya menggunakan nama sumber daya yang diberikan.

(Diperoleh dari CodeDomSerializerBase)
SerializeResourceInvariant(IDesignerSerializationManager, String, Object)

Menserialisasikan objek yang diberikan ke dalam bundel sumber daya menggunakan nama sumber daya yang diberikan menggunakan budaya invarian.

SerializeResourceInvariant(IDesignerSerializationManager, String, Object)

Menserialisasikan objek yang diberikan ke dalam bundel sumber daya menggunakan nama sumber daya yang diberikan.

(Diperoleh dari CodeDomSerializerBase)
SerializeToExpression(IDesignerSerializationManager, Object)

Menserialisasikan nilai yang ditentukan ke ekspresi CodeDOM.

SerializeToExpression(IDesignerSerializationManager, Object)

Menserialisasikan objek yang diberikan ke dalam ekspresi.

(Diperoleh dari CodeDomSerializerBase)
SerializeToReferenceExpression(IDesignerSerializationManager, Object)
Kedaluwarsa.
Kedaluwarsa.

Menserialisasikan nilai yang ditentukan ke ekspresi CodeDOM.

SerializeToResourceExpression(IDesignerSerializationManager, Object)

Menserialisasikan objek yang diberikan ke dalam ekspresi.

(Diperoleh dari CodeDomSerializerBase)
SerializeToResourceExpression(IDesignerSerializationManager, Object, Boolean)

Menserialisasikan objek yang diberikan ke dalam ekspresi yang sesuai untuk budaya invarian.

(Diperoleh dari CodeDomSerializerBase)
SetExpression(IDesignerSerializationManager, Object, CodeExpression)

Mengaitkan objek dengan ekspresi.

(Diperoleh dari CodeDomSerializerBase)
SetExpression(IDesignerSerializationManager, Object, CodeExpression, Boolean)

Mengaitkan objek dengan ekspresi, secara opsional menentukan ekspresi prasetel.

(Diperoleh dari CodeDomSerializerBase)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk

Lihat juga