using System.Collections.Generic; using System.Linq; namespace IRCRobots { public class Capability : ICapability { public string Name { get; set; } public string DraftName { get; set; } public string Alias { get; } public IEnumerable DependsOn { get; set; } private IEnumerable Caps { get; } public Capability() { Alias ??= Name; Caps = new List {Name, DraftName}; } public string? Available(IEnumerable capabilities) { return Caps.FirstOrDefault(cap => cap != null && capabilities.Contains(cap)); } public bool Match(string capability) { return Caps.Contains(capability); } } }