// Copyright (C) Stichting Deltares and State of the Netherlands 2024. All rights reserved. // // This file is part of Riskeer. // // Riskeer is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using System.Globalization; using System.Reflection; namespace Core.Common.Util.Attributes { /// /// Helper method for interacting with project resources. /// internal static class ResourceHelper { /// /// Retrieve the string resource with the given name. /// /// Type of the resource file. /// Name of the resource property to be retrieved. /// String resource in the resources file. /// Thrown when the resource cannot be found, /// does not have the given resource name, or isn't of type string. internal static string GetResourceLookup(Type resourceType, string resourceName) { PropertyInfo property = resourceType.GetProperty(resourceName, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static); if (property == null) { string message = string.Format(CultureInfo.CurrentCulture, "Resource {0} does not have property {1}.", resourceType, resourceName); throw new InvalidOperationException(message); } if (property.PropertyType != typeof(string)) { string message = string.Format(CultureInfo.CurrentCulture, "Resource {0} is not string.", resourceName); throw new InvalidOperationException(message); } return (string) property.GetValue(null, null); } } }