/// <summary> /// Método que retorna Dao de tipo específico passado pelo usuário através de enum. /// No arquivo de configuração deve-se adicionar uma tag "add" com /// os atributos key="Dao_NAMESPACE" e value="nome_do_namespace". /// </summary> /// <param name="daoName">Nome da entidade do Dao específico. Por exemplo: se o Dao gerencia /// acesso a dados de entidade Usuario, passe por parâmetro a string "Usuario" /// </param> /// <returns>objeto do tipo IDao</returns> public IRepository GetRepository(string repositoryName) { // Dá a certeza de que o web.config contém uma declaração para o Dao_NAMESPACE appSetting if (ConfigurationManager.AppSettings["DAO_NAMESPACE"] == null || ConfigurationManager.AppSettings["DAO_NAMESPACE"] == "") { throw new ConfigurationErrorsException("FactoryDao.GetDao: \"DAO_NAMESPACE\" deve ser " + "provido como um appSetting dentro do seu arquivo de configuração. \"Dao_NAMESPACE\" informa à fábrica o namespace do assembly " + " que contém os Daos específicos. Um exemplo de configuração é a declaração <add key=\"DAO_NAMESPACE\" value=\"MyProject.Dao\" />"); } string nomeNamespace = System.Configuration.ConfigurationManager.AppSettings["DAO_NAMESPACE"]; string fullName = nomeNamespace + "." + repositoryName + "NHibernateDao"; Type tipoDao = Type.GetType(fullName); try { NHibernateDao obj = (NHibernateDao)Activator.CreateInstance(tipoDao); if (obj == null) { throw new DaoException("Não foi possível criar objeto do tipo: '" + tipoDao.FullName + "'"); } return(obj); } catch (Exception ex) { throw new DaoException("Não foi possível criar objeto do tipo: '" + tipoDao.FullName + "'", ex); } }
/// <summary> /// Método que retorna o Dao genérico com métodos CRUD. /// </summary> /// <returns>objeto do tipo IDao</returns> public IRepository GetRepository() { NHibernateDao dao = new NHibernateDao(); return(dao); }