internal void EnsureFeature(GuildFeature feature) { if (!HasFeature(feature)) { var vals = Enum.GetValues(typeof(GuildFeature)).Cast <GuildFeature>(); var missingValues = vals.Where(x => feature.HasFlag(x) && !Value.HasFlag(x)); throw new InvalidOperationException($"Missing required guild feature{(missingValues.Count() > 1 ? "s" : "")} {string.Join(", ", missingValues.Select(x => x.ToString()))} in order to execute this operation."); } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var obj = JToken.Load(reader); var arr = obj.ToObject <string[]>(); GuildFeature features = GuildFeature.None; List <string> experimental = new(); foreach (var item in arr) { if (Enum.TryParse <GuildFeature>(string.Concat(item.Split('_')), true, out var result)) { features |= result; } else { experimental.Add(item); } } return(new GuildFeatures(features, experimental.ToArray())); }
public RequireFeatureAttribute(GuildFeature feature) { Feature = feature; }
public bool HasFeature(GuildFeature feature) => Value.HasFlag(feature);
internal GuildFeatures(GuildFeature value, string[] experimental) { Value = value; Experimental = experimental.ToImmutableArray(); }