public FilterDefinition(FilterKinds kind, FilterTypes type, FilterActions action, string param) { Id = Guid.NewGuid(); Kind = kind; Type = type; Action = action; Parameter = param; }
private IEnumerable<string> _Iterate(ComObjectInstance obj, FilterKinds kind) { switch (kind) { case FilterKinds.Everything: return _Iterate(obj, FilterKinds.Building) .Union(_Iterate(obj, FilterKinds.DeviceDescription)) .Union(_Iterate(obj, FilterKinds.GroupAddress)) .Union(_Iterate(obj, FilterKinds.ProductDescription)) .Union(_Iterate(obj, FilterKinds.Topologi)) .Union(_Iterate(obj, FilterKinds.ObjectDescription)) .Distinct(); case FilterKinds.Building: return IterateBuilding(obj.ParentDevice.Building); case FilterKinds.Topologi: return IterateTopology(obj.ParentDevice); case FilterKinds.GroupAddress: return obj.GroupAddresses.SelectMany(row => IterateGroupAddresses(row)); case FilterKinds.GroupAddressDescription: return obj.GroupAddresses.SelectMany(row => IterateGroupAddressDescriptions(row)); case FilterKinds.ObjectDescription: return IterateObject(obj); case FilterKinds.DeviceDescription: return IterateDevice(obj); case FilterKinds.ProductDescription: return IterateProduct(obj); case FilterKinds.ReadFlag: return IterateReadFlag(obj); case FilterKinds.WriteFlag: return IterateWriteFlag(obj); default: throw new NotImplementedException("Filter Kind is unknown"); } }