static ISearcher GetOrCreate(NatProtocol protocol) { if (!Searchers.TryGetValue(protocol, out ISearcher searcher)) { searcher = protocol == NatProtocol.Pmp ? (ISearcher)PmpSearcher.Create() : UpnpSearcher.Create(); searcher.DeviceFound += HandleDeviceFound; searcher.UnknownDeviceFound += HandleUnknownDeviceFound; Searchers[protocol] = searcher; } return(searcher); }