/// <summary>
        /// Tenta recupera os dados da versão do tipo da entidade com base
        /// no tipo informado.
        /// </summary>
        /// <param name="typeName">Tipo que será pesquisado.</param>
        /// <returns>Versão do tipo da entidade correspondente ou null.</returns>
        public BusinessEntityTypeVersion GetTypeVersion(Colosoft.Reflection.TypeName typeName)
        {
            var key = CreateTypeVersionKey(typeName);
            BusinessEntityTypeVersion entityTypeVersion = null;

            if (_typeVersions.TryGetValue(key, out entityTypeVersion))
            {
                return(entityTypeVersion);
            }
            return(null);
        }
        /// <summary>
        /// Tenta recupera as propriedade da versão do tipo da entidade com base no tipo informado.
        /// </summary>
        /// <param name="typeName">Tipo da versão da entidade.</param>
        /// <param name="uiContext">Nome do contexto visual usado para filtrar os dados.</param>
        /// <returns></returns>
        public IEnumerable <BusinessEntityTypeVersionProperty> GetTypeProperties(Colosoft.Reflection.TypeName typeName, string uiContext = null)
        {
            var key = CreateTypeVersionKey(typeName);
            BusinessEntityTypeVersion entityTypeVersion = null;

            if (_typeVersions.TryGetValue(key, out entityTypeVersion))
            {
                return(entityTypeVersion.Properties.Where(f => uiContext == null || f.UIConfigurations.Where(x => x.UIContext == uiContext).Any()));
            }
            return(new BusinessEntityTypeVersionProperty[0]);
        }
 /// <summary>
 /// Cria uma chave para identificar a versão do tipo.
 /// </summary>
 /// <param name="version"></param>
 /// <returns></returns>
 private static string CreateTypeVersionKey(BusinessEntityTypeVersion version)
 {
     return(string.Format("{0}.{1}, {2}", version.TypeNamespace, version.TypeName, version.TypeAssembly));
 }