示例#1
0
        /// <summary>
        /// Get the text of the message in the given language.
        /// </summary>
        public virtual string GetMessage(CultureInfo culture = null)
        {
            if (culture == null)
            {
                culture = CultureInfo.InvariantCulture;
            }

            // Get the message and fill in arguments.
            string message = messageProvider.LoadMessage(errorCode, culture);

            if (string.IsNullOrEmpty(message))
            {
                return(string.Empty);
            }

            if (arguments == null || arguments.Length == 0)
            {
                return(message);
            }

            object[] argumentsToUse = arguments;

            for (int i = 0; i < argumentsToUse.Length; i++)
            {
                DiagnosticInfo embedded = argumentsToUse[i] as DiagnosticInfo;

                if (embedded != null)
                {
                    if (ReferenceEquals(argumentsToUse, arguments))
                    {
                        argumentsToUse = new object[argumentsToUse.Length];
                        Array.Copy(arguments, argumentsToUse, argumentsToUse.Length);
                    }

                    argumentsToUse[i] = embedded.GetMessage(culture);
                }
            }

            return(String.Format(culture, message, argumentsToUse));
        }
示例#2
0
        protected object[] GetArgumentsToUse(IFormatProvider formatProvider)
        {
            object[] argumentsToUse = null;
            for (int i = 0; i < _arguments.Length; i++)
            {
                DiagnosticInfo embedded = _arguments[i] as DiagnosticInfo;
                if (embedded != null)
                {
                    argumentsToUse    = InitializeArgumentListIfNeeded(argumentsToUse);
                    argumentsToUse[i] = embedded.GetMessage(formatProvider);
                    continue;
                }

                ISymbol symbol = _arguments[i] as ISymbol;
                if (symbol != null)
                {
                    argumentsToUse    = InitializeArgumentListIfNeeded(argumentsToUse);
                    argumentsToUse[i] = _messageProvider.GetErrorDisplayString(symbol);
                }
            }

            return(argumentsToUse ?? _arguments);
        }