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. DesignerSerializerAttributeを使用して、カスタム CodeDomSerializer実装をコンポーネントの種類に関連付けます。

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

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

  2. 既定のシリアライザーで既定のコンポーネント構成を実行するコード ステートメントを生成する場合は、コンポーネントの基本シリアライザーを取得して呼び出す必要があります。 コンポーネントの基本シリアライザーを取得するには、メソッドオーバーライドに渡されたIDesignerSerializationManagerGetSerializerメソッドを呼び出します。 構成をシリアル化するコンポーネントの型 GetSerializer メソッドと、要求するシリアライザーの基本型 ( CodeDomSerializer) を渡します。 基本シリアライザーでオーバーライドするのと同じ名前のメソッドを、メソッドオーバーライドに渡された IDesignerSerializationManager とオブジェクトを使用して呼び出します。 Serialize メソッドを実装している場合、基本シリアライザーのSerialize メソッドはオブジェクトを返します。 このオブジェクトの型は、値をシリアル化するコンポーネントの型に依存する基本シリアライザーの型によって異なります。 SerializeEventsSerializeProperties、またはSerializePropertiesToResourcesメソッドを実装する場合は、生成されたコード ステートメントを含む新しい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, Boolean)

指定したオブジェクトがシリアル化されているかどうかを示す値を返します。必要に応じて、事前設定された式を考慮します。

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

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

(継承元 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, Boolean)

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

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

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

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

オブジェクトを式に関連付け、必要に応じてプリセット式を指定します。

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

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

(継承元 CodeDomSerializerBase)
ToString()

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

(継承元 Object)

適用対象

こちらもご覧ください