CodeDomSerializer クラス

定義

オブジェクト グラフを一連の CodeDOM ステートメントにシリアル化します。 このクラスは、シリアライザーの抽象基本クラスを提供します。

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
継承
CodeDomSerializer
継承
CodeDomSerializer
派生

次のコード例は、 から CodeDomSerializer派生するカスタム CodeDOM シリアライザーを作成する方法を示しています。

#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

注釈

カスタム CodeDomSerializer を実装して、デザイン時にコンポーネントの種類のコンポーネント初期化コードの生成を制御できます。

型のカスタム CodeDomSerializer を実装するには、次の操作を行う必要があります。

  1. CodeDomSerializer から派生するクラスを定義します。

  2. シリアル化または逆シリアル化メソッドのメソッドオーバーライドを実装します。 (詳細については、以下の情報を参照してください)。

  3. を使用して、カスタム CodeDomSerializer 実装をコンポーネントの種類に DesignerSerializerAttribute関連付けます。

コンポーネントの構成コードを生成するためのシリアル化メソッドを実装するには:

  1. から CodeDomSerializer派生したクラス内で、基底クラスの適切なシリアル化または逆シリアル化メソッドをオーバーライドします。

  2. 既定のシリアライザーで既定のコンポーネント構成を実行するコード ステートメントを生成する場合は、コンポーネントの基本シリアライザーを取得して呼び出す必要があります。 コンポーネントの基本シリアライザーを取得するには、メソッドオーバーライドに GetSerializer 渡された の IDesignerSerializationManager メソッドを呼び出します。 構成を GetSerializer シリアル化するコンポーネントの型を、要求するシリアライザーの基本型 () と共にメソッドに CodeDomSerializer渡します。 メソッドオーバーライドに渡された オブジェクトと オブジェクトを使用して、基本シリアライザーでオーバーライドするのと同じ名前の IDesignerSerializationManager メソッドを呼び出します。 メソッドを Serialize 実装している場合、 Serialize 基本シリアライザーの メソッドは オブジェクトを返します。 このオブジェクトの型は、値をシリアル化するコンポーネントの種類に依存する基本シリアライザーの型によって異なります。 、SerializeProperties、または SerializePropertiesToResources メソッドをSerializeEvents実装する場合は、生成されたコード ステートメントを格納する新しい CodeStatementCollection を作成し、それを メソッドに渡す必要があります。

  3. 基本シリアライザー メソッドを呼び出した場合は CodeStatementCollection 、 コンポーネントを初期化するために生成する ステートメントを含む があります。 それ以外の場合は、 を作成する CodeStatementCollection必要があります。 コンポーネント構成コードで生成するステートメントを表すオブジェクトをこのコレクションに追加 CodeStatement できます。

  4. コンポーネントを CodeStatementCollection 構成するために生成するソース コードを表す を返します。

注意 (実装者)

CodeDomSerializer から継承する場合は、Deserialize(IDesignerSerializationManager, Object) メンバーと Serialize(IDesignerSerializationManager, Object) メンバーをオーバーライドする必要があります。

コンストラクター

CodeDomSerializer()

CodeDomSerializer クラスの新しいインスタンスを初期化します。

メソッド

Deserialize(IDesignerSerializationManager, Object)

指定したシリアル化された CodeDOM オブジェクトを逆シリアル化してオブジェクトに戻します。

DeserializeExpression(IDesignerSerializationManager, String, CodeExpression)

指定した式を逆シリアル化します。

DeserializeExpression(IDesignerSerializationManager, String, CodeExpression)

指定した式をメモリ内オブジェクトに逆シリアル化します。

(継承元 CodeDomSerializerBase)
DeserializeInstance(IDesignerSerializationManager, Type, Object[], String, Boolean)

指定した型のインスタンスを返します。

(継承元 CodeDomSerializerBase)
DeserializePropertiesFromResources(IDesignerSerializationManager, Object, Attribute[])

フィルターが指定されている場合、指定したフィルターに一致する指定したオブジェクトのプロパティを逆シリアル化します。

DeserializePropertiesFromResources(IDesignerSerializationManager, Object, Attribute[])

インバリアント カルチャのリソース バンドルから、指定したオブジェクトのプロパティを逆シリアル化します。

(継承元 CodeDomSerializerBase)
DeserializeStatement(IDesignerSerializationManager, CodeStatement)

指定したステートメントを逆シリアル化します。

DeserializeStatement(IDesignerSerializationManager, CodeStatement)

CodeDOM ステートメントを解釈して実行することにより、ステートメントを逆シリアル化します。

(継承元 CodeDomSerializerBase)
DeserializeStatementToInstance(IDesignerSerializationManager, CodeStatement)

1 つのステートメントを逆シリアル化します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetExpression(IDesignerSerializationManager, Object)

指定したオブジェクトの式を返します。

(継承元 CodeDomSerializerBase)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetSerializer(IDesignerSerializationManager, Object)

指定したオブジェクト値のシリアライザーを検索します。

(継承元 CodeDomSerializerBase)
GetSerializer(IDesignerSerializationManager, Type)

指定した型のシリアライザーを検索します。

(継承元 CodeDomSerializerBase)
GetTargetComponentName(CodeStatement, CodeExpression, Type)

特定のステートメントが属する必要のあるステートメント グループを決定します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
GetUniqueName(IDesignerSerializationManager, Object)

指定したオブジェクトの一意の名前を返します。

(継承元 CodeDomSerializerBase)
IsSerialized(IDesignerSerializationManager, Object)

指定したオブジェクトがシリアル化されているかどうかを示す値を返します。

(継承元 CodeDomSerializerBase)
IsSerialized(IDesignerSerializationManager, Object, Boolean)

指定したオブジェクトがシリアル化されているかどうかを示す値を返します。オプションで、あらかじめ設定された式を考慮することもできます。

(継承元 CodeDomSerializerBase)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
Serialize(IDesignerSerializationManager, Object)

特定のオブジェクトをシリアル化して、CodeDOM オブジェクトを生成します。

SerializeAbsolute(IDesignerSerializationManager, Object)

既定値を考慮して特定のオブジェクトをシリアル化します。

SerializeCreationExpression(IDesignerSerializationManager, Object, Boolean)

指定したオブジェクトの作成を表す式を返します。

(継承元 CodeDomSerializerBase)
SerializeEvent(IDesignerSerializationManager, CodeStatementCollection, Object, EventDescriptor)

指定されたイベントを指定されたステートメントのコレクションにシリアル化します。

(継承元 CodeDomSerializerBase)
SerializeEvents(IDesignerSerializationManager, CodeStatementCollection, Object, Attribute[])

指定したオブジェクトのイベントをすべてシリアル化します。

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

指定されたイベントを指定されたステートメントのコレクションにシリアル化します。

(継承元 CodeDomSerializerBase)
SerializeMember(IDesignerSerializationManager, Object, MemberDescriptor)

指定されたオブジェクトの指定されたメンバーをシリアル化します。

SerializeMemberAbsolute(IDesignerSerializationManager, Object, MemberDescriptor)

既定値を考慮して、指定されたメンバーをシリアル化します。

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

指定したフィルターを使用して、指定したオブジェクトのプロパティをすべてシリアル化します。

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

指定されたオブジェクトのプロパティを指定されたステートメントのコレクションにシリアル化します。

(継承元 CodeDomSerializerBase)
SerializePropertiesToResources(IDesignerSerializationManager, CodeStatementCollection, Object, Attribute[])

指定されたプロパティをリソースにシリアル化します。

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

指定されたオブジェクトのプロパティをインバリアント カルチャのリソース バンドルにシリアル化します。

(継承元 CodeDomSerializerBase)
SerializeProperty(IDesignerSerializationManager, CodeStatementCollection, Object, PropertyDescriptor)

指定したオブジェクトのプロパティをシリアル化します。

(継承元 CodeDomSerializerBase)
SerializeResource(IDesignerSerializationManager, String, Object)

指定したオブジェクトを、指定したリソース名のリソース バンドルにシリアル化します。

SerializeResource(IDesignerSerializationManager, String, Object)

指定したオブジェクトを、指定したリソース名のリソース バンドルにシリアル化します。

(継承元 CodeDomSerializerBase)
SerializeResourceInvariant(IDesignerSerializationManager, String, Object)

インバリアント カルチャを使用して、指定したオブジェクトを、指定したリソース名のリソース バンドルにシリアル化します。

SerializeResourceInvariant(IDesignerSerializationManager, String, Object)

指定したオブジェクトを、指定したリソース名のリソース バンドルにシリアル化します。

(継承元 CodeDomSerializerBase)
SerializeToExpression(IDesignerSerializationManager, Object)

指定した値を CodeDOM 式にシリアル化します。

SerializeToExpression(IDesignerSerializationManager, Object)

指定したオブジェクトを式にシリアル化します。

(継承元 CodeDomSerializerBase)
SerializeToReferenceExpression(IDesignerSerializationManager, Object)
古い.
古い.

指定した値を CodeDOM 式にシリアル化します。

SerializeToResourceExpression(IDesignerSerializationManager, Object)

指定したオブジェクトを式にシリアル化します。

(継承元 CodeDomSerializerBase)
SerializeToResourceExpression(IDesignerSerializationManager, Object, Boolean)

指定したオブジェクトをインバリアント カルチャに適した式にシリアル化します。

(継承元 CodeDomSerializerBase)
SetExpression(IDesignerSerializationManager, Object, CodeExpression)

オブジェクトを式に関連付けます。

(継承元 CodeDomSerializerBase)
SetExpression(IDesignerSerializationManager, Object, CodeExpression, Boolean)

必要に応じて事前設定された式を指定し、オブジェクトを式に関連付けます。

(継承元 CodeDomSerializerBase)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください