コード例 #1
0
        /// <summary>
        /// Converts a KnownTypeCode to a Type.
        /// </summary>
        /// <param name="knownTypeCode">The known type code to convert.</param>
        /// <param name="metadataRepository">The MetadataRepository of all known modules.</param>
        /// <returns>The type wrapper if its available, null otherwise.</returns>
        internal static IHandleTypeNamedWrapper?ToTypeWrapper(this KnownTypeCode knownTypeCode, MetadataRepository metadataRepository)
        {
            if (metadataRepository == null)
            {
                throw new ArgumentNullException(nameof(metadataRepository));
            }

            var name = ToTypeName(knownTypeCode);

            return(metadataRepository.GetTypeByName(name));
        }
        /// <summary>
        /// Gets the type by a name if available.
        /// </summary>
        /// <param name="name">The name to check.</param>
        /// <param name="checkRepository">If we should check repository on fail.</param>
        /// <returns>The wrapper if available, null otherwise.</returns>
        public TypeWrapper?GetTypeByName(string?name, bool checkRepository = true)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                return(null);
            }

            if (_namesToTypes.Value.TryGetValue(name !, out var item))
            {
                return(item);
            }

            return(checkRepository ? MetadataRepository.GetTypeByName(name) : null);
        }