/// <inheritdoc /> public override object ProvideValue(IServiceProvider serviceProvider) { try { if (this.MemberType != null) { var resourceManager = Gu.Localization.ResourceManagers.ForType(this.MemberType); return(CreateBindingExpression(resourceManager, this.Member, serviceProvider)); } if (string.IsNullOrEmpty(this.Member)) { throw new InvalidOperationException("MarkupExtensionStaticMember"); } var qnk = QualifiedNameAndKey.Parse(this.Member); if (qnk.QualifiedName is null || qnk.Key is null) { return(string.Format(CultureInfo.InvariantCulture, Resources.UnknownErrorFormat, this.Member)); } var type = serviceProvider.Resolve(qnk.QualifiedName); if (type is null) { return(string.Format(CultureInfo.InvariantCulture, Resources.MissingResourcesFormat, this.Member)); } var manager = Gu.Localization.ResourceManagers.ForType(type); this.Member = qnk.Key; #pragma warning disable CA1304 // Specify CultureInfo if (!manager.HasKey(qnk.Key)) #pragma warning restore CA1304 // Specify CultureInfo { return(string.Format(CultureInfo.InvariantCulture, Resources.MissingKeyFormat, this.Member)); } return(CreateBindingExpression(manager, this.Member, serviceProvider)); } #pragma warning disable CA1031 // Do not catch general exception types catch #pragma warning restore CA1031 // Do not catch general exception types { return(string.Format(CultureInfo.InvariantCulture, Resources.UnknownErrorFormat, this.Member)); } }
/// <inheritdoc /> public override object ProvideValue(IServiceProvider serviceProvider) { try { if (this.MemberType != null) { var resourceManager = Gu.Localization.ResourceManagers.ForType(this.MemberType); return(CreateBindingExpression(resourceManager, this.Member, serviceProvider)); } if (string.IsNullOrEmpty(this.Member)) { throw new InvalidOperationException("MarkupExtensionStaticMember"); } var qnk = QualifiedNameAndKey.Parse(this.Member); if (qnk.QualifiedName == null || qnk.Key == null) { return(string.Format(Resources.UnknownErrorFormat, this.Member)); } var type = serviceProvider.Resolve(qnk.QualifiedName); if (type == null) { return(string.Format(Resources.MissingResourcesFormat, this.Member)); } var manager = Gu.Localization.ResourceManagers.ForType(type); this.Member = qnk.Key; if (!manager.HasKey(qnk.Key)) { return(string.Format(Resources.MissingKeyFormat, this.Member)); } return(CreateBindingExpression(manager, this.Member, serviceProvider)); } catch (Exception) { return(string.Format(Resources.UnknownErrorFormat, this.Member)); } }