public void NullKeys() { var john = new TestPerson(null); var people = new SynchronizedObservableDictionary <string, TestPerson>(); using var query = people.ToActiveDictionary((key, value) => new KeyValuePair <string, TestPerson>(value.Name !, value)); Assert.IsNull(query.OperationFault); people.Add("John", john); Assert.IsNotNull(query.OperationFault); john.Name = "John"; Assert.IsNull(query.OperationFault); john.Name = null; Assert.IsNotNull(query.OperationFault); people.Clear(); Assert.IsNull(query.OperationFault); }
public AddOnManager(DirectoryInfo storageDirectory, IWorldOfWarcraftInstallation worldOfWarcraftInstallation, SynchronizationContext synchronizationContext = null) { manifestsCheckTimer = new Timer(ManifestsCheckTimerCallback); WorldOfWarcraftInstallation = worldOfWarcraftInstallation; addOns = new SynchronizedObservableDictionary <Guid, AddOn>(); addOnsWithUpdateAvailable = addOns.ActiveCount((addOnKey, addOn) => addOn.IsUpdateAvailable); addOnsWithUpdateAvailable.PropertyChanged += AddOnsWithUpdateAvailablePropertyChanged; addOnsWithUpdateAvailable.PropertyChanging += AddOnsWithUpdateAvailablePropertyChanging; addOnsActiveEnumerable = addOns.ToActiveEnumerable(); ManifestUrls = new SynchronizedRangeObservableCollection <Uri>(DefaultManifestUrls); AddOns = synchronizationContext == null ? addOnsActiveEnumerable : addOnsActiveEnumerable.SwitchContext(synchronizationContext); StorageDirectory = storageDirectory; if (StorageDirectory != null) { stateFile = new FileInfo(Path.Combine(StorageDirectory.FullName, "addOnManagerState.json")); AddOnsDirectory = new DirectoryInfo(Path.Combine(StorageDirectory.FullName, "AddOnRepositories")); } initializationCompleteTaskCompletionSource = new TaskCompletionSource <object>(); InitializationComplete = initializationCompleteTaskCompletionSource.Task; ThreadPool.QueueUserWorkItem(Initialize); }