示例#1
0
        /// <summary>
        /// Adds the specified instance as metadata against the given category, collection and key.
        /// </summary>
        /// <typeparam name="T">Type of the instance object to store as metadata</typeparam>
        /// <param name='operations'>The operations group for this extension method</typeparam>
        /// <param name="category">The category</param>
        /// <param name="collection">The collection</param>
        /// <param name="key">Unique key for which to store metadata</param>
        /// <param name="instance">The instance object of type T</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>A task object representing the asynchronous operation.</returns>
        public static async Task Add <T>(this IMetadata operations, string category, string collection, string key, T instance, CancellationToken cancellationToken = default(CancellationToken))
            where T : class
        {
            var model = new MetadataModel
            {
                Data = instance.ToMetadataDictionary()
            };

            await operations.AddAsync(category, collection, key, model, cancellationToken).ConfigureAwait(false);
        }
示例#2
0
        /// <summary>
        /// Adds the specified instance as metadata against the given category, collection and key.
        /// Exists for backward compatibility.
        /// </summary>
        /// <typeparam name="T">Type of the instance object to store as metadata</typeparam>
        /// <param name='operations'>The operations group for this extension method</param>
        /// <param name="category">The category</param>
        /// <param name="collection">The collection</param>
        /// <param name="key">Unique key for which to store metadata</param>
        /// <param name="instance">The instance object of type T</param>
        /// <param name="keywords">Keywords associated with the data, these keywords will be used to search the data</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>A task object representing the asynchronous operation.</returns>
        public static Task Add <T>(this IMetadata operations, string category,
                                   string collection, string key, T instance, List <string> keywords = null,
                                   CancellationToken cancellationToken = default(CancellationToken))
            where T : class
        {
            if (instance is MetadataModel instanceAsMetadataModel)
            {
                return(operations.AddAsync(category, collection, key, instanceAsMetadataModel));
            }

            var model = new MetadataModelContract
            {
                Data     = JsonConvert.SerializeObject(instance.ToMetadataDictionary()),
                Keywords = keywords == null ? string.Empty : JsonConvert.SerializeObject(keywords),
            };

            return(operations.RefitClient.Create(category, collection, key, model));
        }