Прочитать на английском

Поделиться через


IDesignerSerializationManager Интерфейс

Определение

Предоставляет интерфейс для управления сериализацией во время разработки.

C#
public interface IDesignerSerializationManager : IServiceProvider
Производный
Реализации

Примеры

В следующем примере показано, как использовать IDesignerSerializationManager для сериализации и десериализации операторов DOM кода.

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

Комментарии

Конструктор может использовать для IDesignerSerializationManager доступа к службам, полезным для управления процессами сериализации во время разработки. Например, класс, реализующий диспетчер сериализации конструктора, может использовать этот интерфейс для создания объектов, поиска типов, идентификации объектов и настройки сериализации определенных типов.

Свойства

Context

Получает стековую, определяемую пользователем область памяти, которая используется для взаимодействия сериализаторов.

Properties

Определяет настраиваемые свойства, которые могут быть сериализованы с помощью доступных сериализаторов.

Методы

AddSerializationProvider(IDesignerSerializationProvider)

Добавляет диспетчеру сериализации заданный поставщик сериализации.

CreateInstance(Type, ICollection, String, Boolean)

Создает экземпляр указанного типа, и добавляет его в сборник именованных экземпляров.

GetInstance(String)

Получает экземпляр созданного объекта с указанным именем либо значение null, если объект не существует.

GetName(Object)

Получает имя указанного объекта или значение null, если у объекта нет имени.

GetSerializer(Type, Type)

Получает сериализатор запрошенного типа для указанного типа объекта.

GetService(Type)

Возвращает объект службы указанного типа.

(Унаследовано от IServiceProvider)
GetType(String)

Возвращает тип указанного имени.

RemoveSerializationProvider(IDesignerSerializationProvider)

Удаляет пользовательский поставщик сериализации из диспетчера сериализации.

ReportError(Object)

Сообщает об ошибке в сериализации.

SetName(Object, String)

Задает имя заданного существующего объекта.

События

ResolveName

Возникает, если не удается найти заданное имя в таблице имен диспетчера сериализации с помощью метода GetName(Object).

SerializationComplete

Возникает при завершении сериализации.

Методы расширения

GetKeyedService<T>(IServiceProvider, Object)

Возвращает службу типа T из IServiceProvider.

GetKeyedServices(IServiceProvider, Type, Object)

Возвращает перечисление служб типа serviceType из IServiceProvider.

GetKeyedServices<T>(IServiceProvider, Object)

Возвращает перечисление служб типа T из IServiceProvider.

GetRequiredKeyedService(IServiceProvider, Type, Object)

Возвращает службу типа serviceType из IServiceProvider.

GetRequiredKeyedService<T>(IServiceProvider, Object)

Возвращает службу типа T из IServiceProvider.

CreateAsyncScope(IServiceProvider)

Создает интерфейс AsyncServiceScope, который может использоваться для разрешения служб с ограниченной областью.

CreateScope(IServiceProvider)

Создает интерфейс IServiceScope, который может использоваться для разрешения служб с ограниченной областью.

GetRequiredService(IServiceProvider, Type)

Возвращает службу типа serviceType из IServiceProvider.

GetRequiredService<T>(IServiceProvider)

Возвращает службу типа T из IServiceProvider.

GetService<T>(IServiceProvider)

Возвращает службу типа T из IServiceProvider.

GetServices(IServiceProvider, Type)

Возвращает перечисление служб типа serviceType из IServiceProvider.

GetServices<T>(IServiceProvider)

Возвращает перечисление служб типа T из IServiceProvider.

GetFakeLogCollector(IServiceProvider)

Возвращает объект , который собирает записи журнала, отправляемые в поддельные средства ведения журнала.

GetFakeRedactionCollector(IServiceProvider)

Возвращает поддельный экземпляр сборщика редактора из контейнера внедрения зависимостей.

Применяется к

Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

См. также раздел