diff --git a/Directory.build.props b/Directory.build.props index 730bbfca..2435d628 100644 --- a/Directory.build.props +++ b/Directory.build.props @@ -7,7 +7,7 @@ latest True latest - 19.* + 20.* $(MSBuildThisFileDirectory) diff --git a/blazor/ClientSideExample/ClientSideExample/ClientSideExample.csproj b/blazor/ClientSideExample/ClientSideExample/ClientSideExample.csproj index c4bfa61f..037edf30 100644 --- a/blazor/ClientSideExample/ClientSideExample/ClientSideExample.csproj +++ b/blazor/ClientSideExample/ClientSideExample/ClientSideExample.csproj @@ -1,14 +1,14 @@ - + - net7.0 + net8.0 3.0 - - - + + + diff --git a/blazor/ClientSideExample/ClientSideExample/Data/WeatherForecast.cs b/blazor/ClientSideExample/ClientSideExample/Data/WeatherForecast.cs index 898d74cd..8e327c43 100644 --- a/blazor/ClientSideExample/ClientSideExample/Data/WeatherForecast.cs +++ b/blazor/ClientSideExample/ClientSideExample/Data/WeatherForecast.cs @@ -1,15 +1,14 @@ using System; -namespace ClientSideExample.Data +namespace ClientSideExample.Data; + +public class WeatherForecast { - public class WeatherForecast - { - public DateTime Date { get; set; } + public DateTime Date { get; set; } - public int TemperatureC { get; set; } + public int TemperatureC { get; set; } - public string Summary { get; set; } + public string Summary { get; set; } - public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); - } -} + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); +} \ No newline at end of file diff --git a/blazor/ClientSideExample/ClientSideExample/Program.cs b/blazor/ClientSideExample/ClientSideExample/Program.cs index 9e7ef0de..14e868ff 100644 --- a/blazor/ClientSideExample/ClientSideExample/Program.cs +++ b/blazor/ClientSideExample/ClientSideExample/Program.cs @@ -5,19 +5,18 @@ using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.Extensions.DependencyInjection; -namespace ClientSideExample +namespace ClientSideExample; + +public static class Program { - public static class Program + public static async Task Main(string[] args) { - public static async Task Main(string[] args) - { - var builder = WebAssemblyHostBuilder.CreateDefault(args); - builder.RootComponents.Add("app"); + var builder = WebAssemblyHostBuilder.CreateDefault(args); + builder.RootComponents.Add("app"); - builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); - builder.Services.AddSingleton(); + builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); + builder.Services.AddSingleton(); - await builder.Build().RunAsync(); - } + await builder.Build().RunAsync(); } } diff --git a/blazor/ClientSideExample/ClientSideExample/ViewModels/CounterViewModel.cs b/blazor/ClientSideExample/ClientSideExample/ViewModels/CounterViewModel.cs index bdbf7cc3..c6d7f1e8 100644 --- a/blazor/ClientSideExample/ClientSideExample/ViewModels/CounterViewModel.cs +++ b/blazor/ClientSideExample/ClientSideExample/ViewModels/CounterViewModel.cs @@ -2,30 +2,29 @@ using System.Threading.Tasks; using ReactiveUI; -namespace ClientSideExample.ViewModels +namespace ClientSideExample.ViewModels; + +public class CounterViewModel : ReactiveObject { - public class CounterViewModel : ReactiveObject - { - private int _currentCount; + private int _currentCount; - private readonly ObservableAsPropertyHelper _count; + private readonly ObservableAsPropertyHelper _count; - public CounterViewModel() - { + public CounterViewModel() + { Increment = ReactiveCommand.CreateFromTask(IncrementCount); _count = Increment.ToProperty(this, x => x.CurrentCount, scheduler: RxApp.MainThreadScheduler); } - public int CurrentCount => _count.Value; + public int CurrentCount => _count.Value; - public ReactiveCommand Increment { get; } + public ReactiveCommand Increment { get; } - private Task IncrementCount() - { + private Task IncrementCount() + { _currentCount++; return Task.FromResult(_currentCount); } - } -} +} \ No newline at end of file diff --git a/blazor/ClientSideExample/ClientSideExample/ViewModels/FetchDataViewModel.cs b/blazor/ClientSideExample/ClientSideExample/ViewModels/FetchDataViewModel.cs index e75db999..441c1e6b 100644 --- a/blazor/ClientSideExample/ClientSideExample/ViewModels/FetchDataViewModel.cs +++ b/blazor/ClientSideExample/ClientSideExample/ViewModels/FetchDataViewModel.cs @@ -6,30 +6,29 @@ using ReactiveUI; -namespace ClientSideExample.ViewModels -{ - public class FetchDataViewModel : ReactiveObject - { - private readonly ObservableAsPropertyHelper _forecasts; +namespace ClientSideExample.ViewModels; - private readonly HttpClient _http; - public FetchDataViewModel(HttpClient http) - { - _http = http; - LoadForecasts = ReactiveCommand.CreateFromTask(LoadWeatherForecastsAsync); +public class FetchDataViewModel : ReactiveObject +{ + private readonly ObservableAsPropertyHelper _forecasts; - _forecasts = LoadForecasts.ToProperty(this, x => x.Forecasts, scheduler: RxApp.MainThreadScheduler); - } + private readonly HttpClient _http; + public FetchDataViewModel(HttpClient http) + { + _http = http; + LoadForecasts = ReactiveCommand.CreateFromTask(LoadWeatherForecastsAsync); - public ReactiveCommand LoadForecasts { get; } + _forecasts = LoadForecasts.ToProperty(this, x => x.Forecasts, scheduler: RxApp.MainThreadScheduler); + } - public WeatherForecast[] Forecasts => _forecasts.Value; + public ReactiveCommand LoadForecasts { get; } + public WeatherForecast[] Forecasts => _forecasts.Value; - private async Task LoadWeatherForecastsAsync() - { - return await _http.GetFromJsonAsync("sample-data/weather.json"); - } + private async Task LoadWeatherForecastsAsync() + { + return await _http.GetFromJsonAsync("sample-data/weather.json"); } + } diff --git a/blazor/ClientSideExample/ClientSideExample/ViewModels/GreetingViewModel.cs b/blazor/ClientSideExample/ClientSideExample/ViewModels/GreetingViewModel.cs index d54f8367..3ab3bcad 100644 --- a/blazor/ClientSideExample/ClientSideExample/ViewModels/GreetingViewModel.cs +++ b/blazor/ClientSideExample/ClientSideExample/ViewModels/GreetingViewModel.cs @@ -2,42 +2,41 @@ using System.Reactive.Linq; using ReactiveUI; -namespace ClientSideExample.ViewModels +namespace ClientSideExample.ViewModels; + +public class GreetingViewModel : ReactiveObject { - public class GreetingViewModel : ReactiveObject - { - private string _name; + private string _name; - private readonly ObservableAsPropertyHelper _canClear; - private readonly ObservableAsPropertyHelper _greeting; + private readonly ObservableAsPropertyHelper _canClear; + private readonly ObservableAsPropertyHelper _greeting; - public ReactiveCommand Clear { get; } + public ReactiveCommand Clear { get; } - public bool CanClear => _canClear.Value; + public bool CanClear => _canClear.Value; - public string Greeting => _greeting.Value; - - public string Name - { - get => _name; - set => this.RaiseAndSetIfChanged(ref _name, value); - } - - public GreetingViewModel() - { - var canClear = this.WhenAnyValue(x => x.Name) - .Select(name => !string.IsNullOrEmpty(name)); - - Clear = ReactiveCommand.Create( - () => { Name = string.Empty; }, - canClear); - - _canClear = Clear.CanExecute - .ToProperty(this, x => x.CanClear); - - _greeting = this.WhenAnyValue(x => x.Name) - .Select(x => string.IsNullOrWhiteSpace(x) ? string.Empty : $"Hello, {x}!") - .ToProperty(this, x => x.Greeting); - } + public string Greeting => _greeting.Value; + + public string Name + { + get => _name; + set => this.RaiseAndSetIfChanged(ref _name, value); + } + + public GreetingViewModel() + { + var canClear = this.WhenAnyValue(x => x.Name) + .Select(name => !string.IsNullOrEmpty(name)); + + Clear = ReactiveCommand.Create( + () => { Name = string.Empty; }, + canClear); + + _canClear = Clear.CanExecute + .ToProperty(this, x => x.CanClear); + + _greeting = this.WhenAnyValue(x => x.Name) + .Select(x => string.IsNullOrWhiteSpace(x) ? string.Empty : $"Hello, {x}!") + .ToProperty(this, x => x.Greeting); } -} +} \ No newline at end of file diff --git a/blazor/ClientSideExample/ClientSideExample/Views/CounterView.razor.cs b/blazor/ClientSideExample/ClientSideExample/Views/CounterView.razor.cs index 733a17f9..76fc0259 100644 --- a/blazor/ClientSideExample/ClientSideExample/Views/CounterView.razor.cs +++ b/blazor/ClientSideExample/ClientSideExample/Views/CounterView.razor.cs @@ -2,18 +2,17 @@ using System.Threading.Tasks; using ClientSideExample.ViewModels; -namespace ClientSideExample.Views +namespace ClientSideExample.Views; + +public partial class CounterView { - public partial class CounterView + public CounterView() { - public CounterView() - { - ViewModel = new CounterViewModel(); - } + ViewModel = new CounterViewModel(); + } - private async Task IncrementCount() - { - await ViewModel.Increment.Execute().ToTask(); - } + private async Task IncrementCount() + { + await ViewModel.Increment.Execute().ToTask(); } -} +} \ No newline at end of file diff --git a/blazor/ClientSideExample/ClientSideExample/Views/FetchDataView.razor.cs b/blazor/ClientSideExample/ClientSideExample/Views/FetchDataView.razor.cs index 2d58beac..73908b5d 100644 --- a/blazor/ClientSideExample/ClientSideExample/Views/FetchDataView.razor.cs +++ b/blazor/ClientSideExample/ClientSideExample/Views/FetchDataView.razor.cs @@ -1,24 +1,21 @@ -using System.Reactive.Threading.Tasks; +using System.Reactive.Linq; using System.Threading.Tasks; using ClientSideExample.ViewModels; using Microsoft.AspNetCore.Components; +namespace ClientSideExample.Views; -namespace ClientSideExample.Views +public partial class FetchDataView { - public partial class FetchDataView + [Inject] + public FetchDataViewModel FetchViewModel { - [Inject] - public FetchDataViewModel FetchViewModel - { - get => ViewModel; - set => ViewModel = value; - - } + get => ViewModel; + set => ViewModel = value; + } - protected override async Task OnInitializedAsync() - { - await ViewModel.LoadForecasts.Execute().ToTask(); - } + protected override async Task OnInitializedAsync() + { + await ViewModel!.LoadForecasts.Execute(); } } diff --git a/blazor/ClientSideExample/ClientSideExample/Views/GreetingView.razor.cs b/blazor/ClientSideExample/ClientSideExample/Views/GreetingView.razor.cs index 24b216ad..aac106ed 100644 --- a/blazor/ClientSideExample/ClientSideExample/Views/GreetingView.razor.cs +++ b/blazor/ClientSideExample/ClientSideExample/Views/GreetingView.razor.cs @@ -2,18 +2,17 @@ using System.Threading.Tasks; using ClientSideExample.ViewModels; -namespace ClientSideExample.Views +namespace ClientSideExample.Views; + +public partial class GreetingView { - public partial class GreetingView + public GreetingView() { - public GreetingView() - { - ViewModel = new GreetingViewModel(); - } + ViewModel = new GreetingViewModel(); + } - public async Task Clear() - { - await ViewModel.Clear.Execute().ToTask(); - } + public async Task Clear() + { + await ViewModel.Clear.Execute().ToTask(); } -} +} \ No newline at end of file