DesignerSerializationManager DesignerSerializationManager DesignerSerializationManager DesignerSerializationManager Class

定義

IDesignerSerializationManager インターフェイスの実装を提供します。Provides an implementation of the IDesignerSerializationManager interface.

public ref class DesignerSerializationManager : IServiceProvider, System::ComponentModel::Design::Serialization::IDesignerSerializationManager
public class DesignerSerializationManager : IServiceProvider, System.ComponentModel.Design.Serialization.IDesignerSerializationManager
type DesignerSerializationManager = class
    interface IDesignerSerializationManager
    interface IServiceProvider
Public Class DesignerSerializationManager
Implements IDesignerSerializationManager, IServiceProvider
継承
DesignerSerializationManagerDesignerSerializationManagerDesignerSerializationManagerDesignerSerializationManager
実装

注釈

IDesignerSerializationManagerにシリアル化を制御するオブジェクト形式に依存しないインターフェイスを使用するインターフェイスが設計されています。The IDesignerSerializationManager interface is designed to be a format-independent interface to an object that controls serialization. 基本的に、コンテキストとサービスが実際には、逆シリアル化を実行するには、シリアライザーを提供します。It essentially provides context and services to serializers, which actually perform the deserialization. IDesignerSerializationManager オブジェクトを追跡することによって逆シリアル化プロセスを支援します。IDesignerSerializationManager assists in the deserialization process by keeping track of objects. これは、手法に似ています、IDesignerHostインターフェイス: デザイナーには、実際には、ユーザー インターフェイス (UI) が用意されてとIDesignerHost連携して動作する別のデザイナーを許可する、接着剤を提供します。This is similar in technique to the IDesignerHost interface: designers actually provide the user interface (UI), and IDesignerHost provides the glue that allows different designers to work together.

DesignerSerializationManager クラスは、IDesignerSerializationManager を実装しています。The DesignerSerializationManager class implements IDesignerSerializationManager. 逆シリアル化と同じように実行時シリアライザーなどの一般的なフォームを提供しています、BinaryFormatterします。It is designed to provide a generic form of deserialization that is similar to run-time serializers like the BinaryFormatter.

DesignerSerializationManagerクラスは、次の 3 つの目的を達成します。The DesignerSerializationManager class achieves three goals:

  • これはシンプルですぐに使用できるオブジェクトのさまざまな形式を逆シリアル化するために使用できます。It is a simple, turnkey object that can be used to deserialize a variety of formats.

  • 汎用的で、特定の形式に結び付いていないをお勧めします。It is generic and not tied to any particular format. マークアップの逆シリアル化と同様に CodeDOM シリアル化解除を平等に使用できることができます。It can be used equally for CodeDOM deserialization as well as markup deserialization.

  • 拡張性があり、コピー/貼り付けと元に戻す/やり直しのシナリオで使用される別のシリアル化メソッドをサポートしています。It is extensible and supports different serialization methods that are used in copy/paste and undo/redo scenarios.

デザイン時シリアル化では、実行時のオブジェクトのシリアル化との相違点があります。Design-time serialization has the following differences from run-time object serialization:

  • シリアル化を実行するオブジェクトは、コンポーネントから、デザイン時ロジックを削除できるようにに一般に、実行時のオブジェクトから別です。The object performing the serialization is generally separate from the run-time object, so that design-time logic can be removed from a component.

  • シリアル化方式は、オブジェクトを完全に初期化された作成が前提としています。 逆シリアル化中にプロパティとメソッドの呼び出しによって変更します。The serialization scheme assumes the object will be created fully initialized, and then modified through property and method invocations during deserialization.

  • (プロパティは、既定値を含める) オブジェクトに設定する値を持つオブジェクトのプロパティはシリアル化されません。Properties of an object that have values that were never set on the object (the properties contain the default values) are not serialized. 逆に、逆シリアル化ストリームには、セキュリティ ホールがあります。Conversely, the deserialization stream may have holes.

  • 強調が、オブジェクトの完全なシリアル化ではなく、シリアル化ストリーム内のコンテンツの品質に配置されます。Emphasis is placed on the quality of the content within the serialization stream, rather than the full serialization of an object. あるオブジェクトをシリアル化する方法が定義されてない場合は、そのオブジェクトがスキップされることを意味ではなく例外をスローします。This means that if there is no defined way to serialize an object, that object may be skipped rather than throwing an exception. シリアル化エンジンは、どのエラーを無視できるかを決定するヒューリスティックとは回復を提供できます。The serialization engine may provide heuristics here to decide which failures can be ignored and which are unrecoverable.

  • シリアル化ストリームの逆シリアル化が必要以上のデータがあります。The serialization stream may have more data than is needed for deserialization. たとえば、ソース コードのシリアル化には、オブジェクト グラフを逆シリアル化するために必要なコードと混合ユーザー コードがあります。Source code serialization, for example, has user code mixed in with the code needed to deserialize an object graph. このユーザー コードは、逆シリアル化時に無視し、シリアル化時に保存する必要があります。This user code must be ignored on deserialization and preserved on serialization.

これらの違いにより、別のシリアル化モデルは、デザイン時シリアル化に適用されます。Because of these differences, a different serialization model applies to design-time serialization. このモデルでは、シリアル化されているデータ型ごとに個別のシリアライザー オブジェクトで使用します。This model utilizes a separate serializer object for each data type being serialized. 各シリアライザーは、全体における問題を小さな、投稿物を提供します。Each serializer provides its small contribution to the problem as a whole. これらのシリアライザーは、一般的なシリアル化マネージャーをすべて調整されます。These serializers are all coordinated through a common serialization manager. シリアル化マネージャーは、これらの異なるシリアライザーとの間の状態を維持する責任を負います。The serialization manager is responsible for maintaining state between these different serializers. たとえば、次のクラスを検討してください。As an example, consider the following class:

public class SampleObject
{
    private string stringValue = null;
    private int intValue = int.MinValue;

    public string StringProperty 
    { 
        get { return this.stringValue; }

        set { this.stringValue = value; }
    }

    public int IntProperty 
    {
        get { return this.intValue; }

        set{ this.intValue = value; }
    }
}
Public Class SampleObject
   Private stringValue As String = Nothing
   Private intValue As Integer = Integer.MinValue
   
   
   Public Property StringProperty() As String
      Get
         Return Me.stringValue
      End Get 
      Set
         Me.stringValue = value
      End Set
   End Property 
   
   Public Property IntProperty() As Integer
      Get
         Return Me.intValue
      End Get 
      Set
         Me.intValue = value
      End Set
   End Property
End Class 

このクラスのインスタンスは 3 つの異なるシリアライザーを使用: のいずれかSampleObject、文字列は、1 つのもう 1 つの整数。An instance of this class would utilize three different serializers: one for SampleObject, one for strings, and another for integers. シリアライザーSampleObjectためルート シリアライザーが呼び出されますSampleObjectシリアル化のグラフのルートです。The serializer for SampleObject is called the root serializer because SampleObject is the root of the serialization graph. 複雑なオブジェクト グラフを作成することもできます。More complex object graphs can be created as well. たとえば、何が起こる場合SampleObject次のように変更されました。For example, consider what would happen if SampleObject were changed as follows:

public class SampleObject
{
    private string stringValue = null;
    private int intValue = int.MinValue;
    private SampleObject childValue = null;

    public string StringProperty
    {
        get { return this.stringValue; }

        set { this.stringValue = value; }
    }

    public int IntProperty
    {
        get { return this.intValue; }

        set { this.intValue = value; }
    }

    public SampleObject Child
    {
        get { return this.childValue; }

        set { this.childValue = value; }
    }
}
Public Class SampleObject
   Private stringValue As String = Nothing
   Private intValue As Integer = Integer.MinValue
   Private childValue As SampleObject = Nothing
   
   
   Public Property StringProperty() As String
      Get
         Return Me.stringValue
      End Get 
      Set
         Me.stringValue = value
      End Set
   End Property 
   
   Public Property IntProperty() As Integer
      Get
         Return Me.intValue
      End Get 
      Set
         Me.intValue = value
      End Set
   End Property 
   
   Public Property Child() As SampleObject
      Get
         Return Me.childValue
      End Get 
      Set
         Me.childValue = value
      End Set
   End Property
End Class 

これにより、SampleObject自体の別のインスタンスである子にします。This allows SampleObject to have a child that is another instance of itself. 次のコードは、オブジェクト グラフを設定します。The following code fills in the object graph:

class Program
{
    static void Main(string[] args)
    {
        SampleObject root = new SampleObject();

        SampleObject currentObject = root;

        for (int i = 0; i < 10; i++)
        {
            SampleObject o = new SampleObject();

            currentObject.Child = o;

            currentObject = o;
        }
    }
}
Class Program
   
   Public Overloads Shared Sub Main()
      Main(System.Environment.GetCommandLineArgs())
   End Sub
   
   Overloads Shared Sub Main(args() As String)
      Dim root As New SampleObject()
      
      Dim currentObject As SampleObject = root
      
      Dim i As Integer
      For i = 0 To 9
         Dim o As New SampleObject()
         
         currentObject.Child = o
         
         currentObject = o
      Next i
   End Sub 
End Class

ときにrootをシリアル化が使用される 4 つのシリアライザーがあります: 1 つのルート シリアライザー、子の 1 つのシリアライザーSampleObjectの 1 つのシリアライザーintと 1 つのシリアライザーをstringWhen root is serialized, there will be four serializers used: one root serializer, one serializer for the child SampleObject, one serializer for int, and one serializer for string. シリアライザーの型に基づいているため、シリアライザーの各インスタンスを作成する必要はありませんはキャッシュSampleObjectします。Serializers are cached based on type, so there is no need to create a serializer for each instance of SampleObject.

DesignerSerializationManagerクラスは、シリアル化セッションの概念に基づいています。The DesignerSerializationManager class is based on the idea of a serialization session. セッションでは、さまざまなシリアライザーがアクセスできる状態を維持します。A session maintains state that can be accessed by the various serializers. セッションが破棄されると、この状態は破棄されます。When a session is disposed, this state is destroyed. これにより、シリアライザーは主にステートレスなままはシリアライザーをクリーンアップするために役立ちますが破損していることを確認します。This helps to ensure that serializers remain largely stateless, and helps to clean up serializers that are have been corrupted. 次の表では、およびセッション間での状態の管理方法について説明します。The following tables describe how state is managed in and among sessions.

グローバル状態Global State

この状態は、シリアル化マネージャー オブジェクトが所有しますは、現在のシリアル化セッションに依存しません。This state is owned by the serialization manager object, but is independent of the current serialization session.

ObjectObject 使用法Usage
シリアル化プロバイダーSerialization providers オブジェクトは、カスタムのシリアル化のプロバイダーとして自身を追加できます。Objects can add themselves as custom serialization providers. これらのプロバイダーは、シリアライザーの検索に使用するためよりも長く保持、シリアル化セッションです。Because these providers are used to locate serializers, they outlive a serialization session.

セッションが所有している状態Session-Owned State

この状態は、セッションが所有し、セッションが破棄されるときに破棄されます。This state is owned by a session and is destroyed when a session is destroyed. そのため、任意のプロパティまたはこの状態を操作するメソッドへのアクセス例外がスローされます、アクティブなセッションにシリアル化マネージャーがない場合。Consequently, accessing any properties or methods that would manipulate this state will throw an exception if the serialization manager is not in an active session.

ObjectObject 使用法Usage
ResolveName イベントResolveName event ResolveName名の他の解決を提供するシリアライザーによってイベントが関連付けられています。The ResolveName event is attached by a serializer to provide additional resolution of names. すべてのイベント ハンドラーは、セッションが終了する場合、このイベントからデタッチされます。All handlers are detached from this event when a session terminates.
SerializationComplete イベントSerializationComplete event SerializationCompleteセッションが破棄される直前にイベントが発生します。The SerializationComplete event is raised just before a session is disposed. 次に、すべてのイベント ハンドラーは、このイベントからデタッチされます。Then, all handlers are detached from this event.
名前テーブルName table シリアル化マネージャーは、オブジェクトとその名前の間をマップするテーブルを保持します。The serialization manager maintains a table that maps between objects and their names. シリアライザーを識別しやすくオブジェクトの名前を付けることがあります。Serializers may give objects names for easy identification. セッションの終了時にこの名前のテーブルがクリアされます。This name table is cleared when the session terminates.
シリアライザー キャッシュSerializer cache シリアル化マネージャーを指定する要求されたシリアライザーのキャッシュを保持します。The serialization manager maintains a cache of serializers it has been asked to supply. セッションの終了時にこのキャッシュはクリアされます。This cache is cleared when the session terminates. パブリックGetSerializerメソッドは、いつでも安全に呼び出すことができますが、その値は、セッション内から呼び出された場合にのみキャッシュされます。The public GetSerializer method can safely be called at any time, but its value is cached only if it is called from within a session.
コンテキスト スタックContext stack シリアル化マネージャーにアクセスできるコンテキスト スタックと呼ばれるオブジェクトを保持する、Contextプロパティ。The serialization manager maintains an object called the context stack, which you can access with the Context property. シリアライザーは、このスタックを使用して、他のシリアライザーに提供される追加の情報を格納します。Serializers can use this stack to store additional information that is available to other serializers. たとえば、プロパティ値をシリアル化するシリアライザーは、シリアル化する値を要求する前に、シリアル化のスタックにプロパティ名をプッシュできます。For example, a serializer that is serializing a property value can push the property name on the serialization stack before asking the value to serialize. このスタックは、セッションが終了したときにクリアされます。This stack is cleared when the session is terminated.
エラー一覧Error list シリアル化マネージャーは、シリアル化中に発生したエラーの一覧を保持します。The serialization manager maintains a list of errors that occurred during serialization. この一覧は、を通じてアクセスされる、Errorsセッションが終了した場合に、プロパティをオフにします。This list, which is accessed through the Errors property, is cleared when the session is terminated. アクセス、Errorsセッション間でのプロパティは例外が発生します。Accessing the Errors property between sessions will result in an exception.

コンストラクター

DesignerSerializationManager() DesignerSerializationManager() DesignerSerializationManager() DesignerSerializationManager()

DesignerSerializationManager クラスの新しいインスタンスを初期化します。Initializes a new instance of the DesignerSerializationManager class.

DesignerSerializationManager(IServiceProvider) DesignerSerializationManager(IServiceProvider) DesignerSerializationManager(IServiceProvider) DesignerSerializationManager(IServiceProvider)

新しいインスタンスを初期化、DesignerSerializationManagerクラスは、特定のサービス プロバイダーを使用します。Initializes a new instance of the DesignerSerializationManager class with the given service provider.

プロパティ

Container Container Container Container

取得またはこのシリアル化マネージャーをコンテナーに設定します。Gets or sets to the container for this serialization manager.

Errors Errors Errors Errors

シリアル化または逆シリアル化中に発生したエラーの一覧を取得します。Gets the list of errors that occurred during serialization or deserialization.

PreserveNames PreserveNames PreserveNames PreserveNames

取得または設定を示す値かどうか、CreateInstance(Type, ICollection, String, Boolean)メソッドを指定した名前、コンテナーの存在をチェックする必要があります。Gets or sets a value indicating whether the CreateInstance(Type, ICollection, String, Boolean) method should check for the presence of the given name in the container.

PropertyProvider PropertyProvider PropertyProvider PropertyProvider

オブジェクトにシリアル化マネージャーのプロパティを提供するために使用する必要がありますを取得Propertiesプロパティ。Gets the object that should be used to provide properties to the serialization manager's Properties property.

RecycleInstances RecycleInstances RecycleInstances RecycleInstances

CreateInstance(Type, ICollection, String, Boolean) が型の新しいインスタンスを常に作成するかどうかを示す値が取得または設定されます。Gets or sets a value that indicates whether CreateInstance(Type, ICollection, String, Boolean) will always create a new instance of a type.

ValidateRecycledTypes ValidateRecycledTypes ValidateRecycledTypes ValidateRecycledTypes

CreateInstance(Type, ICollection, String, Boolean) メソッドによって、一致する名前が同じ型を参照していることが検査されるかどうかを示す値が取得または設定されます。Gets or sets a value that indicates whether the CreateInstance(Type, ICollection, String, Boolean) method will verify that matching names refer to the same type.

メソッド

CreateInstance(Type, ICollection, String, Boolean) CreateInstance(Type, ICollection, String, Boolean) CreateInstance(Type, ICollection, String, Boolean) CreateInstance(Type, ICollection, String, Boolean)

型のインスタンスを作成します。Creates an instance of a type.

CreateSession() CreateSession() CreateSession() CreateSession()

新しいシリアル化セッションを作成します。Creates a new serialization session.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetRuntimeType(String) GetRuntimeType(String) GetRuntimeType(String) GetRuntimeType(String)

指定された型名に対応する型を取得します。Gets the type corresponding to the specified type name.

GetSerializer(Type, Type) GetSerializer(Type, Type) GetSerializer(Type, Type) GetSerializer(Type, Type)

指定したオブジェクト型のシリアライザーを取得します。Gets the serializer for the given object type.

GetService(Type) GetService(Type) GetService(Type) GetService(Type)

要求したサービスを取得します。Gets the requested service.

GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
GetType(String) GetType(String) GetType(String) GetType(String)

要求された型を取得します。Gets the requested type.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
OnResolveName(ResolveNameEventArgs) OnResolveName(ResolveNameEventArgs) OnResolveName(ResolveNameEventArgs) OnResolveName(ResolveNameEventArgs)

ResolveName イベントを発生させます。Raises the ResolveName event.

OnSessionCreated(EventArgs) OnSessionCreated(EventArgs) OnSessionCreated(EventArgs) OnSessionCreated(EventArgs)

SessionCreated イベントを発生させます。Raises the SessionCreated event.

OnSessionDisposed(EventArgs) OnSessionDisposed(EventArgs) OnSessionDisposed(EventArgs) OnSessionDisposed(EventArgs)

SessionDisposed イベントを発生させます。Raises the SessionDisposed event.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

イベント

SessionCreated SessionCreated SessionCreated SessionCreated

セッションが作成されるときに発生します。Occurs when a session is created.

SessionDisposed SessionDisposed SessionDisposed SessionDisposed

セッションが破棄されるときに発生します。Occurs when a session is disposed.

明示的なインターフェイスの実装

IDesignerSerializationManager.AddSerializationProvider(IDesignerSerializationProvider) IDesignerSerializationManager.AddSerializationProvider(IDesignerSerializationProvider) IDesignerSerializationManager.AddSerializationProvider(IDesignerSerializationProvider) IDesignerSerializationManager.AddSerializationProvider(IDesignerSerializationProvider)

シリアル化マネージャーにカスタムのシリアル化プロバイダーを追加します。Adds a custom serialization provider to the serialization manager.

IDesignerSerializationManager.Context IDesignerSerializationManager.Context IDesignerSerializationManager.Context IDesignerSerializationManager.Context

このシリアル化セッションのコンテキスト スタックを取得します。Gets the context stack for this serialization session.

IDesignerSerializationManager.CreateInstance(Type, ICollection, String, Boolean) IDesignerSerializationManager.CreateInstance(Type, ICollection, String, Boolean) IDesignerSerializationManager.CreateInstance(Type, ICollection, String, Boolean) IDesignerSerializationManager.CreateInstance(Type, ICollection, String, Boolean)

CreateInstance(Type, ICollection, String, Boolean) メソッドを実装します。Implements the CreateInstance(Type, ICollection, String, Boolean) method.

IDesignerSerializationManager.GetInstance(String) IDesignerSerializationManager.GetInstance(String) IDesignerSerializationManager.GetInstance(String) IDesignerSerializationManager.GetInstance(String)

指定した名前の作成されたオブジェクトのインスタンスを取得します。Retrieves an instance of a created object of the specified name.

IDesignerSerializationManager.GetName(Object) IDesignerSerializationManager.GetName(Object) IDesignerSerializationManager.GetName(Object) IDesignerSerializationManager.GetName(Object)

指定したオブジェクトの名前を取得します。Retrieves a name for the specified object.

IDesignerSerializationManager.GetSerializer(Type, Type) IDesignerSerializationManager.GetSerializer(Type, Type) IDesignerSerializationManager.GetSerializer(Type, Type) IDesignerSerializationManager.GetSerializer(Type, Type)

指定したオブジェクト型の要求された型のシリアライザーを取得します。Gets a serializer of the requested type for the specified object type.

IDesignerSerializationManager.GetType(String) IDesignerSerializationManager.GetType(String) IDesignerSerializationManager.GetType(String) IDesignerSerializationManager.GetType(String)

指定した名前の型を取得します。Gets a type of the specified name.

IDesignerSerializationManager.Properties IDesignerSerializationManager.Properties IDesignerSerializationManager.Properties IDesignerSerializationManager.Properties

実装、Propertiesプロパティ。Implements the Properties property.

IDesignerSerializationManager.RemoveSerializationProvider(IDesignerSerializationProvider) IDesignerSerializationManager.RemoveSerializationProvider(IDesignerSerializationProvider) IDesignerSerializationManager.RemoveSerializationProvider(IDesignerSerializationProvider) IDesignerSerializationManager.RemoveSerializationProvider(IDesignerSerializationProvider)

以前に追加したシリアル化プロバイダーを削除します。Removes a previously added serialization provider.

IDesignerSerializationManager.ReportError(Object) IDesignerSerializationManager.ReportError(Object) IDesignerSerializationManager.ReportError(Object) IDesignerSerializationManager.ReportError(Object)

シリアル化に回復可能なエラーを報告するために使用します。Used to report a recoverable error in serialization.

IDesignerSerializationManager.ResolveName IDesignerSerializationManager.ResolveName IDesignerSerializationManager.ResolveName IDesignerSerializationManager.ResolveName

IDesignerSerializationManager.GetName(Object) が、指定した名前をシリアル化マネージャーの名前テーブルで見つけることができない場合に発生します。Occurs when IDesignerSerializationManager.GetName(Object) cannot locate the specified name in the serialization manager's name table.

IDesignerSerializationManager.SerializationComplete IDesignerSerializationManager.SerializationComplete IDesignerSerializationManager.SerializationComplete IDesignerSerializationManager.SerializationComplete

シリアル化が完了したときに発生します。Occurs when serialization is complete.

IDesignerSerializationManager.SetName(Object, String) IDesignerSerializationManager.SetName(Object, String) IDesignerSerializationManager.SetName(Object, String) IDesignerSerializationManager.SetName(Object, String)

指定したオブジェクトの名前を設定します。Sets the name for the specified object.

IServiceProvider.GetService(Type) IServiceProvider.GetService(Type) IServiceProvider.GetService(Type) IServiceProvider.GetService(Type)

このメンバーの説明については、GetService(Type) メソッドのトピックを参照してください。For a description of this member, see the GetService(Type) method.

適用対象

こちらもご覧ください