/// <summary>
        /// Registers new view creation method for given object type name.
        /// </summary>
        /// <param name="typeName">Object type name</param>
        /// <param name="createMethod">Create method to register</param>
        public void RegisterView(string typeName, CreateViewMethod createMethod)
        {
            if (typeName == null)
            {
                throw new ArgumentNullException("typeName");
            }
            if (createMethod == null)
            {
                throw new ArgumentNullException("createMethod");
            }

            // Check, if view already registered
            if (createViewDictionary.ContainsKey(typeName))
            {
                return;
            }
            createViewDictionary.Add(typeName, createMethod);
        }
        /// <summary>
        /// Creates new document object. Extracts creation method from the collection
        /// of registered creation methods and use it for creation.
        /// </summary>
        /// <param name="document">
        /// Reference to the instance of the document object
        /// </param>
        /// <returns>
        /// Instance of the new document object
        /// </returns>
        public IEditor CreateView(IDocument document)
        {
            // Check input paramaters
            if (document == null)
            {
                throw new ArgumentNullException("document");
            }

            // Retrieve and invoke method
            CreateViewMethod createMethod = createViewDictionary[document.TypeName];

            if (createMethod == null)
            {
                throw new NotSupportedException(String.Format(
                                                    CultureInfo.CurrentCulture,
                                                    Resources.Error_ViewNotRegistered,
                                                    document.TypeName));
            }
            return(createMethod.Invoke(document));
        }
        /// <summary>
        /// Registers new view creation method for given object type name.
        /// </summary>
        /// <param name="typeName">Object type name</param>
        /// <param name="createMethod">Create method to register</param>
        public void RegisterView(string typeName, CreateViewMethod createMethod)
        {
            if (typeName == null)
                throw new ArgumentNullException("typeName");
            if (createMethod == null)
                throw new ArgumentNullException("createMethod");

            // Check, if view already registered
            if (createViewDictionary.ContainsKey(typeName))
                return;
            createViewDictionary.Add(typeName, createMethod);
        }