コード例 #1
0
        public static IReadOnlyDictionary <int, TEnum> MapToLookupTable <TLookup, TEnum>(
            this IQueryable <TLookup> lookupTerms,
            IReadOnlyDictionary <string, TEnum> enumValuesByAlternateTerm = null)
            where TLookup : IAopWikiIdentifiable, ITerm
            where TEnum : struct
        {
            if (!typeof(TEnum).GetTypeInfo().IsEnum)
            {
                throw new ArgumentException($"{typeof(TEnum).Name} must be an enum type.");
            }

            return(lookupTerms.ToList()
                   .ToDictionary(
                       x => x.Id,
                       x =>
            {
                var enumMember = default(TEnum);
                if (enumValuesByAlternateTerm?.TryGetValue(x.Term, out enumMember) ?? false)
                {
                    return enumMember;
                }

                return UnsafeEnums.GetMember <TEnum>(GetEnumMemberName(x.Term), true)?.Value
                ?? throw new ArgumentException(
                    $"Could not find enum value {x.Term} in type {typeof(TEnum).Name}");
            }));
        }
コード例 #2
0
 public void UnsafeEnumsBasicTest()
 {
     TestHelper.ExpectException <ArgumentException>(() => UnsafeEnums.GetUnderlyingType <int>());
     TestHelper.ExpectException <ArgumentException>(() => UnsafeEnums.GetUnderlyingType <Enum>());
     TestHelper.ExpectException <ArgumentException>(() => UnsafeEnums.GetUnderlyingType <string>());
     Assert.AreEqual(typeof(short), UnsafeEnums.GetUnderlyingType <DateFilterOperator>());
 }