using System.Diagnostics.CodeAnalysis; using AyCode.Utils.Extensions; using LinqToDB.Common; using Nop.Core; using Nop.Core.Domain.Common; namespace Mango.Nop.Core.Extensions; public static class GenericAttributeExtensions { public static TValue? GetValueOrNull(this IEnumerable src, string key) where TValue : struct { var ga = src.SingleOrDefault(x => x.Key == key); if (ga == null || ga.Value.IsNullOrWhiteSpace()) return null; return CommonHelper.To(ga.Value); } public static TValue GetValueOrDefault(this IEnumerable src, string key, TValue defaultValue = default) where TValue : struct { var gaValue = GetValueOrNull(src, key); return gaValue == null ? defaultValue : CommonHelper.To(gaValue); } public static bool TryGetValue(this IEnumerable src, string key, [NotNullWhen(true)] out TValue? value) where TValue : struct { value = null; var gaValue = GetValueOrNull(src, key); if (gaValue == null) return false; value = CommonHelper.To(gaValue); return true; } }