diff --git a/Src/AsyncAwaitBestPractices.MVVM/AsyncAwaitBestPractices.MVVM.csproj b/Src/AsyncAwaitBestPractices.MVVM/AsyncAwaitBestPractices.MVVM.csproj index 381d1b6..124fb6c 100644 --- a/Src/AsyncAwaitBestPractices.MVVM/AsyncAwaitBestPractices.MVVM.csproj +++ b/Src/AsyncAwaitBestPractices.MVVM/AsyncAwaitBestPractices.MVVM.csproj @@ -33,8 +33,9 @@ - Add `AsyncCommand<TExecute, TCanExecute>` - Add `AsyncValueCommand<TExecute, TCanExecute>` - Implement SourceLink +- Support .NET 5 - 5.0.0 + 5.0.1 https://github.com/brminnick/AsyncAwaitBestPractices $(AssemblyName) ($(TargetFramework)) 1.0.0.0 diff --git a/Src/AsyncAwaitBestPractices.UnitTests/WeakEventManagerTests/Tests_WeakEventManager_Delegate.cs b/Src/AsyncAwaitBestPractices.UnitTests/WeakEventManagerTests/Tests_WeakEventManager_Delegate.cs index 5045ce5..949f88d 100644 --- a/Src/AsyncAwaitBestPractices.UnitTests/WeakEventManagerTests/Tests_WeakEventManager_Delegate.cs +++ b/Src/AsyncAwaitBestPractices.UnitTests/WeakEventManagerTests/Tests_WeakEventManager_Delegate.cs @@ -8,7 +8,7 @@ class Tests_WeakEventManager_Delegate : BaseTest, INotifyPropertyChanged { readonly WeakEventManager _propertyChangedWeakEventManager = new WeakEventManager(); - public event PropertyChangedEventHandler PropertyChanged + public event PropertyChangedEventHandler? PropertyChanged { add => _propertyChangedWeakEventManager.AddEventHandler(value); remove => _propertyChangedWeakEventManager.RemoveEventHandler(value); @@ -21,10 +21,10 @@ public void WeakEventManagerDelegate_HandleEvent_ValidImplementation() PropertyChanged += HandleDelegateTest; bool didEventFire = false; - void HandleDelegateTest(object sender, PropertyChangedEventArgs e) + void HandleDelegateTest(object? sender, PropertyChangedEventArgs e) { Assert.IsNotNull(sender); - Assert.AreEqual(this.GetType(), sender.GetType()); + Assert.AreEqual(this.GetType(), sender?.GetType()); Assert.IsNotNull(e); @@ -46,7 +46,7 @@ public void WeakEventManagerDelegate_HandleEvent_NullSender() PropertyChanged += HandleDelegateTest; bool didEventFire = false; - void HandleDelegateTest(object sender, PropertyChangedEventArgs e) + void HandleDelegateTest(object? sender, PropertyChangedEventArgs e) { Assert.IsNull(sender); Assert.IsNotNull(e); @@ -69,7 +69,7 @@ public void WeakEventManagerDelegate_HandleEvent_InvalidEventArgs() PropertyChanged += HandleDelegateTest; bool didEventFire = false; - void HandleDelegateTest(object sender, PropertyChangedEventArgs e) => didEventFire = true; + void HandleDelegateTest(object? sender, PropertyChangedEventArgs e) => didEventFire = true; //Act @@ -86,10 +86,10 @@ public void WeakEventManagerDelegate_HandleEvent_NullEventArgs() PropertyChanged += HandleDelegateTest; bool didEventFire = false; - void HandleDelegateTest(object sender, PropertyChangedEventArgs e) + void HandleDelegateTest(object? sender, PropertyChangedEventArgs e) { Assert.IsNotNull(sender); - Assert.AreEqual(this.GetType(), sender.GetType()); + Assert.AreEqual(this.GetType(), sender?.GetType()); Assert.IsNull(e); @@ -113,7 +113,7 @@ public void WeakEventManagerDelegate_HandleEvent_InvalidHandleEventEventName() PropertyChanged += HandleDelegateTest; bool didEventFire = false; - void HandleDelegateTest(object sender, PropertyChangedEventArgs e) => didEventFire = true; + void HandleDelegateTest(object? sender, PropertyChangedEventArgs e) => didEventFire = true; //Act _propertyChangedWeakEventManager.RaiseEvent(this, new PropertyChangedEventArgs("Test"), nameof(TestStringEvent)); @@ -149,7 +149,7 @@ public void WeakEventManagerDelegate_UnassignedEvent() PropertyChanged += HandleDelegateTest; PropertyChanged -= HandleDelegateTest; - void HandleDelegateTest(object sender, PropertyChangedEventArgs e) => didEventFire = true; + void HandleDelegateTest(object? sender, PropertyChangedEventArgs e) => didEventFire = true; //Act #pragma warning disable CS8625 //Cannot convert null literal to non-nullable reference type @@ -168,7 +168,7 @@ public void WeakEventManagerDelegate_UnassignedEventManager() bool didEventFire = false; PropertyChanged += HandleDelegateTest; - void HandleDelegateTest(object sender, PropertyChangedEventArgs e) => didEventFire = true; + void HandleDelegateTest(object? sender, PropertyChangedEventArgs e) => didEventFire = true; //Act unassignedEventManager.RaiseEvent(null, null, nameof(PropertyChanged)); @@ -185,7 +185,7 @@ public void WeakEventManagerDelegate_HandleEvent_InvalidHandleEvent() PropertyChanged += HandleDelegateTest; bool didEventFire = false; - void HandleDelegateTest(object sender, PropertyChangedEventArgs e) => didEventFire = true; + void HandleDelegateTest(object? sender, PropertyChangedEventArgs e) => didEventFire = true; //Act diff --git a/Src/AsyncAwaitBestPractices/AsyncAwaitBestPractices.csproj b/Src/AsyncAwaitBestPractices/AsyncAwaitBestPractices.csproj index 5c1fa24..6ab8aff 100644 --- a/Src/AsyncAwaitBestPractices/AsyncAwaitBestPractices.csproj +++ b/Src/AsyncAwaitBestPractices/AsyncAwaitBestPractices.csproj @@ -32,8 +32,9 @@ New In This Release: - `WeakEventManager` performance improvements by implementing `ValueTuple` - Implement SourceLink +- Support .NET 5 - 5.0.0 + 5.0.1 https://github.com/brminnick/AsyncAwaitBestPractices $(AssemblyName) ($(TargetFramework)) 1.0.0.0 diff --git a/Src/AsyncAwaitBestPractices/WeakEventManager/WeakEventManager.extensions.shared.cs b/Src/AsyncAwaitBestPractices/WeakEventManager/WeakEventManager.extensions.shared.cs index 069ea70..e604254 100644 --- a/Src/AsyncAwaitBestPractices/WeakEventManager/WeakEventManager.extensions.shared.cs +++ b/Src/AsyncAwaitBestPractices/WeakEventManager/WeakEventManager.extensions.shared.cs @@ -59,14 +59,14 @@ public partial class WeakEventManager /// /// Handler /// Event name - public void AddEventHandler(Delegate handler, [CallerMemberName] string eventName = "") => AddEventHandler(in handler, in eventName); + public void AddEventHandler(Delegate? handler, [CallerMemberName] string eventName = "") => AddEventHandler(in handler, in eventName); /// /// Removes the event handler. /// /// Handler /// Event name - public void RemoveEventHandler(Delegate handler, [CallerMemberName] string eventName = "") => RemoveEventHandler(in handler, in eventName); + public void RemoveEventHandler(Delegate? handler, [CallerMemberName] string eventName = "") => RemoveEventHandler(in handler, in eventName); /// /// Invokes the event EventHandler diff --git a/Src/AsyncAwaitBestPractices/WeakEventManager/WeakEventManager.shared.cs b/Src/AsyncAwaitBestPractices/WeakEventManager/WeakEventManager.shared.cs index 6a18a23..cce3c5c 100644 --- a/Src/AsyncAwaitBestPractices/WeakEventManager/WeakEventManager.shared.cs +++ b/Src/AsyncAwaitBestPractices/WeakEventManager/WeakEventManager.shared.cs @@ -20,7 +20,7 @@ public partial class WeakEventManager /// /// Handler /// Event name - public void AddEventHandler(in EventHandler handler, [CallerMemberName] in string eventName = "") + public void AddEventHandler(in EventHandler? handler, [CallerMemberName] in string eventName = "") { if (IsNullOrWhiteSpace(eventName)) throw new ArgumentNullException(nameof(eventName)); @@ -36,7 +36,7 @@ public void AddEventHandler(in EventHandler handler, [CallerMemberNa /// /// Handler /// Event name - public void AddEventHandler(in Action action, [CallerMemberName] in string eventName = "") + public void AddEventHandler(in Action? action, [CallerMemberName] in string eventName = "") { if (IsNullOrWhiteSpace(eventName)) throw new ArgumentNullException(nameof(eventName)); @@ -52,7 +52,7 @@ public void AddEventHandler(in Action action, [CallerMemberName] in /// /// Handler /// Event name - public void RemoveEventHandler(in EventHandler handler, [CallerMemberName] in string eventName = "") + public void RemoveEventHandler(in EventHandler? handler, [CallerMemberName] in string eventName = "") { if (IsNullOrWhiteSpace(eventName)) throw new ArgumentNullException(nameof(eventName)); @@ -68,7 +68,7 @@ public void RemoveEventHandler(in EventHandler handler, [CallerMembe /// /// Handler /// Event name - public void RemoveEventHandler(in Action action, [CallerMemberName] in string eventName = "") + public void RemoveEventHandler(in Action? action, [CallerMemberName] in string eventName = "") { if (IsNullOrWhiteSpace(eventName)) throw new ArgumentNullException(nameof(eventName)); @@ -109,7 +109,7 @@ public partial class WeakEventManager /// /// Handler /// Event name - public void AddEventHandler(in Delegate handler, [CallerMemberName] in string eventName = "") + public void AddEventHandler(in Delegate? handler, [CallerMemberName] in string eventName = "") { if (IsNullOrWhiteSpace(eventName)) throw new ArgumentNullException(nameof(eventName)); @@ -125,7 +125,7 @@ public void AddEventHandler(in Delegate handler, [CallerMemberName] in string ev /// /// Handler /// Event name - public void RemoveEventHandler(in Delegate handler, [CallerMemberName] in string eventName = "") + public void RemoveEventHandler(in Delegate? handler, [CallerMemberName] in string eventName = "") { if (IsNullOrWhiteSpace(eventName)) throw new ArgumentNullException(nameof(eventName));