Example #1
0
        /// <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;
        }
Example #2
0
        /// <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);
        }
Example #5
0
 /// <summary>
 /// Initialises a new instance of <see cref="WorkContext"/>.
 /// </summary>
 /// <param name="extensions"></param>
 public WorkContext(IWorkContextExtensionCollection extensions)
 {
     _extensions = new WorkContextExtensionReferences <StandardExtensions>(extensions);
 }
Example #6
0
 /// <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;
 }