| File: System\Windows\Forms\WinCategoryAttribute.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms\System.Windows.Forms.csproj (System.Windows.Forms) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.ComponentModel; namespace System.Windows.Forms; /// <summary> /// CategoryAttribute that can access WinForms localized strings. /// </summary> [AttributeUsage(AttributeTargets.All)] internal sealed class WinCategoryAttribute : CategoryAttribute { /// <summary> /// Initializes a new instance of the <see cref="CategoryAttribute"/> class. /// </summary> public WinCategoryAttribute(string category) : base(category) { } /// <summary> /// This method is called the first time the category property /// is accessed. It provides a way to lookup a localized string for /// the given category. Classes may override this to add their /// own localized names to categories. If a localized string is /// available for the given value, the method should return it. /// Otherwise, it should return null. /// </summary> protected override string GetLocalizedString(string value) { string? localizedValue = base.GetLocalizedString(value); localizedValue ??= (string?)GetSRObject("WinFormsCategory" + value); // This attribute is internal, and we should never have a missing resource string. Debug.Assert(localizedValue is not null, $"All Windows Forms category attributes should have localized strings. Category '{value}' not found."); return localizedValue; } private static object? GetSRObject(string name) { object? resourceObject = null; try { resourceObject = SR.ResourceManager.GetObject(name); } catch (Resources.MissingManifestResourceException) { } return resourceObject; } }