/// <summary> /// Sets the extension on the collection. /// </summary> /// <typeparam name="TExtension">The extension type.</typeparam> /// <param name="collection">The extension collection.</param> /// <param name="extension">The extension instance.</param> public static void SetExtension <TExtension>(this IWorkContextExtensionCollection collection, TExtension extension) where TExtension : class { Ensure.IsNotNull(collection, nameof(collection)); collection[typeof(TExtension)] = extension; }
/// <summary> /// Gets the extension of the given type from the collection. /// </summary> /// <typeparam name="TExtension">The extension type.</typeparam> /// <param name="collection">The extension collection.</param> /// <returns>The extension instance.</returns> public static TExtension GetExtension <TExtension>(this IWorkContextExtensionCollection collection) where TExtension : class { Ensure.IsNotNull(collection, nameof(collection)); return(collection[typeof(TExtension)] as TExtension); }
/// <summary> /// Updates the extension reference. /// </summary> /// <param name="extensions">The set of extensions.</param> /// <param name="extension">The extension.</param> /// <returns>The extension instance.</returns> public TExtension Update(IWorkContextExtensionCollection extensions, TExtension extension) { Ensure.IsNotNull(extensions, nameof(extensions)); Ensure.IsNotNull(extension, nameof(extension)); extensions.SetExtension <TExtension>(extension); _extension = extension; _revision = extensions.Revision; return(extension); }
/// <summary> /// Fetches the most recent reivion of the given extension. /// </summary> /// <param name="extensions">The extension instance.</param> /// <returns>The extension instance.</returns> public TExtension Fetch(IWorkContextExtensionCollection extensions) { Ensure.IsNotNull(extensions, nameof(extensions)); if (_revision == extensions.Revision) { return(_extension); } _extension = extensions.GetExtension <TExtension>(); _revision = extensions.Revision; return(_extension); }
/// <summary> /// Initialises a new instance of <see cref="WorkContext"/>. /// </summary> /// <param name="extensions"></param> public WorkContext(IWorkContextExtensionCollection extensions) { _extensions = new WorkContextExtensionReferences <StandardExtensions>(extensions); }
/// <summary> /// Initialises a new instance of <see cref="WorkContextExtensionCollection"/>. /// </summary> /// <param name="defaults">[Optional] The set of default extensions/</param> public WorkContextExtensionCollection(IWorkContextExtensionCollection defaults = null) { _defaults = defaults; }
/// <summary> /// Initialises a new instance of <see cref="WorkContextExtensionReferences{TCache}"/>. /// </summary> /// <param name="extensions">The set of extensions.</param> public WorkContextExtensionReferences(IWorkContextExtensionCollection extensions) { Extensions = Ensure.IsNotNull(extensions, nameof(extensions)); Cache = default(TCache); Revision = Extensions.Revision; }