IDesignerSerializationManager Interfaz
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona una interfaz que puede administrar la serialización en tiempo de diseño.
public interface class IDesignerSerializationManager : IServiceProvider
public interface IDesignerSerializationManager : IServiceProvider
type IDesignerSerializationManager = interface
interface IServiceProvider
Public Interface IDesignerSerializationManager
Implements IServiceProvider
- Derivado
- Implementaciones
Ejemplos
En el ejemplo siguiente se muestra cómo usar IDesignerSerializationManager para serializar y deserializar instrucciones DOM de código.
#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
Comentarios
Un diseñador puede utilizar IDesignerSerializationManager para acceder a los servicios útiles para administrar procesos de serialización en tiempo de diseño. Por ejemplo, una clase que implementa el administrador de serialización del diseñador puede usar esta interfaz para crear objetos, buscar tipos, identificar objetos y personalizar la serialización de determinados tipos.
Propiedades
Context |
Obtiene un área de almacenamiento definida por el usuario basada en pilas, útil para las comunicaciones entre los serializadores. |
Properties |
Indica las propiedades personalizadas que se pueden serializar con los serializadores disponibles. |
Métodos
AddSerializationProvider(IDesignerSerializationProvider) |
Agrega el proveedor de serialización especificado al administrador de serialización. |
CreateInstance(Type, ICollection, String, Boolean) |
Crea una instancia del tipo especificado y la agrega a la colección de instancias designadas. |
GetInstance(String) |
Obtiene una instancia de un objeto creado a partir del nombre especificado, o |
GetName(Object) |
Obtiene el nombre del objeto especificado o |
GetSerializer(Type, Type) |
Obtiene un serializador del tipo solicitado para el tipo de objeto especificado. |
GetService(Type) |
Obtiene el objeto de servicio del tipo especificado. (Heredado de IServiceProvider) |
GetType(String) |
Obtiene un tipo del nombre especificado. |
RemoveSerializationProvider(IDesignerSerializationProvider) |
Quita un proveedor de serialización personalizado del administrador de serialización. |
ReportError(Object) |
Notifica un error en la serialización. |
SetName(Object, String) |
Establece el nombre del objeto existente especificado. |
Eventos
ResolveName |
Tiene lugar cuando GetName(Object) no puede encontrar el nombre especificado en la tabla de nombres del administrador de serialización. |
SerializationComplete |
Se produce al finalizar la serialización. |
Métodos de extensión
GetKeyedService<T>(IServiceProvider, Object) |
Obtiene un servicio de tipo |
GetKeyedServices(IServiceProvider, Type, Object) |
Obtiene una enumeración de servicios de tipo |
GetKeyedServices<T>(IServiceProvider, Object) |
Obtiene una enumeración de servicios de tipo |
GetRequiredKeyedService(IServiceProvider, Type, Object) |
Obtiene un servicio de tipo |
GetRequiredKeyedService<T>(IServiceProvider, Object) |
Obtiene un servicio de tipo |
CreateAsyncScope(IServiceProvider) |
Crea una instancia de AsyncServiceScope que se puede usar para resolver los servicios con ámbito. |
CreateScope(IServiceProvider) |
Crea una instancia de IServiceScope que se puede usar para resolver los servicios con ámbito. |
GetRequiredService(IServiceProvider, Type) |
Obtiene el servicio de tipo |
GetRequiredService<T>(IServiceProvider) |
Obtiene el servicio de tipo |
GetService<T>(IServiceProvider) |
Obtiene el servicio de tipo |
GetServices(IServiceProvider, Type) |
Obtiene una enumeración de los servicios de tipo |
GetServices<T>(IServiceProvider) |
Obtiene una enumeración de los servicios de tipo |
GetFakeLogCollector(IServiceProvider) |
Obtiene el objeto que recopila los registros enviados al registrador falso. |
GetFakeRedactionCollector(IServiceProvider) |
Obtiene la instancia falsa del recopilador de redactores del contenedor de inserción de dependencias. |