/// <summary>
        /// RegisterDocument all documents in the specified assembly.
        /// </summary>
        /// <param name="typeResolver"></param>
        /// <param name="assembly"></param>
        public static void RegisterAssemblyDocuments(this IDocumentTypeResolver typeResolver, Assembly assembly)
        {
            if (assembly == null)
            {
                throw new ArgumentNullException(nameof(assembly));
            }

            var documentTypes = assembly
                                .DefinedTypes
                                .Where(t => !t.IsAbstract && typeof(Document).GetTypeInfo().IsAssignableFrom(t));

            foreach (var type in documentTypes)
            {
                typeResolver.RegisterDocument(type.AsType());
            }
        }
 /// <summary>
 /// RegisterDocument the specified document type.
 /// </summary>
 /// <typeparam name="TDocument"></typeparam>
 /// <param name="typeResolver"></param>
 public static void RegisterDocument <TDocument>(this IDocumentTypeResolver typeResolver)
 {
     typeResolver.RegisterDocument(typeof(TDocument));
 }