DesignerSerializationManager クラスとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > DesignerSerializationManager クラスの意味・解説 

DesignerSerializationManager クラス

メモ : このクラスは、.NET Framework version 2.0新しく追加されたものです。

IDesignerSerializationManager インターフェイス実装提供します

名前空間: System.ComponentModel.Design.Serialization
アセンブリ: System.Design (system.design.dll 内)
構文構文

Public Class DesignerSerializationManager
    Implements IDesignerSerializationManager, IServiceProvider
Dim instance As DesignerSerializationManager
public class DesignerSerializationManager :
 IDesignerSerializationManager, IServiceProvider
public ref class DesignerSerializationManager
 : IDesignerSerializationManager, IServiceProvider
public class DesignerSerializationManager implements
 IDesignerSerializationManager, IServiceProvider
public class DesignerSerializationManager implements
 IDesignerSerializationManager, IServiceProvider
解説解説

IDesignerSerializationManager インターフェイスは、シリアル化制御するオブジェクト対する、形式依存しないインターフェイスとしてデザインされています。このインターフェイスは、基本的に実際は逆シリアル化実行するシリアライザにコンテキストサービス提供しますIDesignerSerializationManager は、オブジェクト追跡続けることによって逆シリアル化プロセス支援します。これは、IDesignerHost インターフェイス対す手法においても同様ですデザイナは、実際にユーザー インターフェイス (UI: User Interface) を提供しIDesignerHost は、さまざまなデザイナを結びつけて連動できるようにします。

DesignerSerializationManager クラスは、IDesignerSerializationManager実装しています。このクラスは、BinaryFormatter のような実行時シリアライザと同様の、逆シリアル化汎用的形式提供するようにデザインされています。

DesignerSerializationManager クラスでは、次の 3 つの目標実現してます。

デザイン時のシリアル化は、実行時オブジェクトシリアル化次の点で異なります

これらの相違点から、デザイン時のシリアル化には、別のシリアル化モデル適用されます。このモデルでは、シリアル化対象となるデータ型ごとに個別のシリアライザ オブジェクト利用します。各シリアライザは、問題全体に対してはわずかずつ有効です。これらのシリアライザは、すべて共通のシリアル化マネージャ通じて調整されます。シリアル化マネージャは、これら異なるシリアライザ間で状態を維持する必要があります一例として、次のクラス考えてます。

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 
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; }
    }
}

このクラスインスタンスは、SampleObject 用、文字列用、整数用の 3 種類のシリアライザを利用しますSampleObjectシリアル化グラフルートであるため、SampleObject のシリアライザは、ルート シリアライザと呼ばれます。さらに複雑なオブジェクト グラフ作成できます。たとえば、SampleObject次のように変更され場合に、何が起こるかを考えてます。

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 
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; }
    }
}

これにより、SampleObject はそれ自体別のインスタンスである子を持つことができますオブジェクト グラフ次のコード記述します

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
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;
        }
    }
}

rootシリアル化するときにはルート シリアライザと、子 SampleObject 用、int 用、string 用の各シリアライザの 4 つのシリアライザが使用されます。シリアライザは型に基づいてキャッシュされるため、SampleObject の各インスタンス用にシリアライザを作成する要はありません。

DesignerSerializationManager クラスは、シリアル化セッション概念基づいてます。セッションでは、さまざまなシリアライザがアクセスできる状態を維持します。セッション破棄されると、この状態も破棄されます。これにより、シリアライザをほとんどの場合状態のないままにしておけます。また、破損した状態にあるシリアライザの削除にも役立ちますセッション内およびセッション間で、状態がどのように管理されるかを次の表に示します

グローバル状態

セッション保有の状態

この状態はセッション保有しセッション破棄されるとこの状態も破棄されます。たがってシリアル化マネージャアクティブセッションない場合、この状態を操作するプロパティまたはメソッドアクセスすると、例外スローさます。

オブジェクト

使い方

ResolveName イベント

ResolveName イベントは、名前の解決提供するためにシリアライザによって接続されます。セッション終了すると、すべてのハンドラはこのイベントから接続解除されます

SerializationComplete イベント

SerializationComplete イベントは、セッション破棄される直前発生しますこの後すべてのハンドラがこのイベントから接続解除されます

名前テーブル

シリアル化マネージャは、オブジェクトとその名前を対応付けるテーブル保持してます。シリアライザは、識別容易にするために、オブジェクトに名前を付けることができますセッション終了すると、この名前テーブル消去されます。

シリアライザのキャッシュ

シリアル化マネージャは、提供を要求されているシリアライザのキャッシュ保持してます。セッション終了すると、このキャッシュ消去されます。パブリック メソッド GetSerializer は、いつでも安全に呼び出すことができますが、その値がキャッシュされるのは、セッション内から呼び出した場合だけです。

コンテキスト スタック

シリアル化マネージャは、コンテキスト スタック呼ばれるオブジェクト保持してます。このオブジェクトには、Context プロパティ使用してアクセスできます。シリアライザはこのスタック使用して、他のシリアライザで使用できる追加情報格納します。たとえば、プロパティ値をシリアル化するシリアライザは、シリアル化する値を要求する前にシリアル化スタックプロパティ名をプッシュできますセッション終了すると、このスタック消去されます。

エラー リスト

シリアル化マネージャは、シリアル化実行時発生したエラーリスト保持してます。このリストには、Errors プロパティからアクセスます。セッション終了すると、エラー リスト消去されます。セッション合間Errors プロパティアクセスすると、例外発生します

継承階層継承階層
System.Object
  System.ComponentModel.Design.Serialization.DesignerSerializationManager
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
DesignerSerializationManager メンバ
System.ComponentModel.Design.Serialization 名前空間
IDesignerSerializationManager
IDesignerHost インターフェイス
ContextStack クラス
IServiceProvider
BinaryFormatter


このページでは「.NET Framework クラス ライブラリ リファレンス」からDesignerSerializationManager クラスを検索した結果を表示しています。
Weblioに収録されているすべての辞書からDesignerSerializationManager クラスを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からDesignerSerializationManager クラス を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「DesignerSerializationManager クラス」の関連用語

DesignerSerializationManager クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



DesignerSerializationManager クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS