Show / Hide Table of Contents

Class HttpServiceWrapperFactory

Предоставляет интерфейс для создания типизированных декораторов для экземпляров IHttpService.

Inheritance
System.Object
HttpServiceWrapperFactory
Namespace:InfinniPlatform.DocumentStorage
Assembly:InfinniPlatform.DocumentStorage.HttpService.dll
Syntax
public class HttpServiceWrapperFactory : object, IHttpServiceWrapperFactory
Remarks

В текущей реализации хостинг IHttpService выполнен на базе функционала NancyFx, который требует, чтобы каждый сервис имел уникальный CLR-тип. Тем не менее, на уровне прикладной разработки часто возникает необходимость создания однотипных сервисов. Вариант решения с автоматической генерацией кода сервисов был отклонен, так как это усложняет процесс прикладной разработки, неадекватно увеличивает кодовую базу, требует поддержки ее в актуальном состоянии. И все эти сложности только из-за текущей реализации механизма хостинга сервисов. Поэтому был рассмотрен вариант автоматической генерации типизированных декораторов для экземпляров IHttpService. Для каждого экземпляра IHttpService создается декоратор с уникальным CLR-типом, который скрывает обращение к реальному экземпляру. Это решение оставляет все неудобства на уровне реализации и предоставляет на прикладном уровне простую и удобную в использовании абстракцию. Генерация типов делается с использованием классов из пространства "System.Reflection.Emit", поскольку это самый быстрый и не требующий дополнительных установок способ генерации типов (по сравнению с CSharpCodeProvider). При написании кода был использован плагин "Reflector.ReflectionEmitLanguage".

Constructors

| Improve this Doc View Source

HttpServiceWrapperFactory()

Declaration
public HttpServiceWrapperFactory()

Methods

| Improve this Doc View Source

CreateServiceWrapper(String, IHttpService)

Создать типизированный декоратор для экземпляра IHttpService.

Declaration
public IHttpService CreateServiceWrapper(string httpServiceWrapperTypeName, IHttpService httpService)
Parameters
Type Name Description
System.String httpServiceWrapperTypeName
IHttpService httpService
Returns
Type Description
IHttpService
Implements
IHttpServiceWrapperFactory.CreateServiceWrapper(String, IHttpService)

Extension Methods

DynamicCollectionExtensions.GetItem(Object, Int32)
DynamicCollectionExtensions.SetItem(Object, Int32, Object)
DynamicCollectionExtensions.AddItem(Object, Object)
DynamicCollectionExtensions.InsertItem(Object, Int32, Object)
DynamicCollectionExtensions.RemoveItem(Object, Object)
DynamicCollectionExtensions.RemoveItemAt(Object, Int32)
DynamicCollectionExtensions.MoveItem(Object, Object, Int32)
DynamicObjectExtensions.TryGetPropertyValue(Object, String)
DynamicObjectExtensions.TrySetPropertyValue(Object, String, Object)
DynamicObjectExtensions.TryGetPropertyValueByPath(Object, String)
DynamicObjectExtensions.TrySetPropertyValueByPath(Object, String, Object)
ReflectionExtensions.IsInstanceOfType(Object, Type)
ReflectionExtensions.GetMemberValue(Object, String)
ReflectionExtensions.SetMemberValue(Object, String, Object)
ReflectionExtensions.InvokeMember(Object, String, Object[], out Object, Type[])
ReflectionExtensions.GetFieldValue(Object, FieldInfo)
ReflectionExtensions.SetFieldValue(Object, FieldInfo, Object)
ReflectionExtensions.GetPropertyValue(Object, PropertyInfo)
ReflectionExtensions.SetPropertyValue(Object, PropertyInfo, Object)
ReflectionExtensions.GetMethodDelegate(Object, MethodInfo)
ReflectionExtensions.GetEventDelegate(Object, EventInfo)
ReflectionExtensions.SetEventDelegate(Object, EventInfo, Object)
CommonExtensions.ExecuteSilent<T>(T, Action<T>)
  • Improve this Doc
  • View Source
Back to top © Copyright Infinnity Solutions Ltd, 2010–2017.