From 70caf4c470f652af34fdd93c0c9d7318b389b44a Mon Sep 17 00:00:00 2001 From: Glenn Watson <5834289+glennawatson@users.noreply.github.com> Date: Sat, 26 Sep 2026 04:37:20 +1000 Subject: [PATCH] feat: cover ReactiveUI.SourceGenerators' ObservableAsProperty and IViewFor behaviour - [ObservableAsProperty] takes InitialValue, ReadOnly and UseProtected. An initial value is returned until the helper is assigned; a non-string one is an expression bound with the declaring file's usings. - RXUIBIND018 and a code fix rewrite the older field, method and observable property forms as partial properties; RXUIBIND019 reports a marked method with parameters. - Views declared with ReactiveUI.SourceGenerators' [IViewFor] register, and views register in a ReactiveUI.Binding.Reactive consumer. - Every DebuggerDisplay starts with the name of its type. --- CLAUDE.md | 35 +- README.md | 32 +- .../AnalyzerReleases.Unshipped.md | 2 + .../Analyzers/ObservableAsPropertyAnalyzer.cs | 184 +++++++ .../ObservableAsPropertyCodeFixProvider.cs | 167 ++++++ .../CodeFixes/ObservableAsPropertyRewriter.cs | 460 ++++++++++++++++ .../PublicAPI/net10.0-ios/PublicAPI.txt | 101 ++-- .../net10.0-maccatalyst/PublicAPI.txt | 101 ++-- .../PublicAPI/net10.0-macos/PublicAPI.txt | 101 ++-- .../PublicAPI/net10.0-tvos/PublicAPI.txt | 101 ++-- .../PublicAPI/net10.0/PublicAPI.txt | 99 ++-- .../PublicAPI/net11.0-ios/PublicAPI.txt | 101 ++-- .../net11.0-maccatalyst/PublicAPI.txt | 101 ++-- .../PublicAPI/net11.0-macos/PublicAPI.txt | 101 ++-- .../PublicAPI/net11.0-tvos/PublicAPI.txt | 101 ++-- .../PublicAPI/net11.0/PublicAPI.txt | 99 ++-- .../PublicAPI/net462/PublicAPI.txt | 99 ++-- .../PublicAPI/net47/PublicAPI.txt | 99 ++-- .../PublicAPI/net471/PublicAPI.txt | 99 ++-- .../PublicAPI/net472/PublicAPI.txt | 99 ++-- .../PublicAPI/net48/PublicAPI.txt | 99 ++-- .../PublicAPI/net481/PublicAPI.txt | 99 ++-- .../PublicAPI/net8.0/PublicAPI.txt | 99 ++-- .../PublicAPI/net9.0/PublicAPI.txt | 99 ++-- .../Bindings/BindingTypeConverter.cs | 2 +- .../ByteToNullableByteTypeConverter.cs | 2 +- .../DecimalToNullableDecimalTypeConverter.cs | 2 +- .../DoubleToNullableDoubleTypeConverter.cs | 2 +- .../Converter/EqualityTypeConverter.cs | 2 +- .../IntegerToNullableIntegerTypeConverter.cs | 2 +- .../LongToNullableLongTypeConverter.cs | 2 +- .../NullableByteToByteTypeConverter.cs | 2 +- .../NullableDecimalToDecimalTypeConverter.cs | 2 +- .../NullableDoubleToDoubleTypeConverter.cs | 2 +- .../NullableIntegerToIntegerTypeConverter.cs | 2 +- .../NullableLongToLongTypeConverter.cs | 2 +- .../NullableShortToShortTypeConverter.cs | 2 +- .../NullableSingleToSingleTypeConverter.cs | 2 +- .../ShortToNullableShortTypeConverter.cs | 2 +- .../SingleToNullableSingleTypeConverter.cs | 2 +- .../Bindings/Converter/StringConverter.cs | 2 +- .../BindingFallbackConverterRegistry.cs | 2 +- .../BindingTypeConverterRegistry.cs | 2 +- .../Bindings/Converters/ConverterService.cs | 2 +- .../SetMethodBindingConverterRegistry.cs | 2 +- .../Bindings/ObservableAsPropertyAttribute.cs | 42 +- .../Bindings/ObservableAsPropertyHelper.cs | 2 +- .../ObservableAsPropertyInheritance.cs | 25 + .../Bindings/ReactiveBinding.cs | 2 +- .../Builder/ReactiveUIBindingBuilder.cs | 2 +- .../Fallback/ObservationAffinityChecker.cs | 4 +- .../Interactions/Interaction.cs | 2 +- .../Interactions/InteractionContext.cs | 2 +- .../UnhandledInteractionException.cs | 2 +- .../Interfaces/ObservedChange.cs | 2 +- .../ExpressionChainParameters.cs | 2 +- .../ExpressionChainSink.cs | 2 +- .../ObservableForPropertySink.cs | 2 +- .../Observables/CallbackPropertyObservable.cs | 2 +- .../Observables/DeferredPropertyObservable.cs | 2 +- .../Observables/EventObservable.cs | 2 +- .../NotifyPropertyChangedObservable.cs | 2 +- .../Observables/PluginPropertyObservable.cs | 2 +- .../Observables/PropertyChangingObservable.cs | 2 +- .../Observables/PropertyObservable.cs | 2 +- .../UnchangingPropertyObservable.cs | 2 +- .../apple-common/KvoPropertyObservable.cs | 2 +- .../View/DefaultViewLocator.cs | 2 +- .../View/ViewContractAttribute.cs | 2 +- .../View/ViewMappingBuilder.cs | 2 +- .../AnalyzerReleases.Unshipped.md | 2 + .../Constants.cs | 15 + .../DiagnosticWarnings.cs | 32 ++ .../ObservableAsPropertyGenerator.cs | 121 ++++- .../ViewLocatorDispatchGenerator.cs | 76 ++- .../Helpers/ObservableAsPropertyOptions.cs | 51 ++ .../Helpers/ViewRegistrationExtractor.cs | 229 +++++--- .../Models/ObservableAsPropertyInfo.cs | 17 +- .../Models/ViewRegistrationInfo.cs | 8 +- .../PublicAPI/net10.0-ios/PublicAPI.txt | 101 ++-- .../net10.0-maccatalyst/PublicAPI.txt | 101 ++-- .../PublicAPI/net10.0-macos/PublicAPI.txt | 101 ++-- .../PublicAPI/net10.0-tvos/PublicAPI.txt | 101 ++-- .../PublicAPI/net10.0/PublicAPI.txt | 99 ++-- .../PublicAPI/net11.0-ios/PublicAPI.txt | 101 ++-- .../net11.0-maccatalyst/PublicAPI.txt | 101 ++-- .../PublicAPI/net11.0-macos/PublicAPI.txt | 101 ++-- .../PublicAPI/net11.0-tvos/PublicAPI.txt | 101 ++-- .../PublicAPI/net11.0/PublicAPI.txt | 99 ++-- .../PublicAPI/net462/PublicAPI.txt | 99 ++-- .../PublicAPI/net47/PublicAPI.txt | 99 ++-- .../PublicAPI/net471/PublicAPI.txt | 99 ++-- .../PublicAPI/net472/PublicAPI.txt | 99 ++-- .../PublicAPI/net48/PublicAPI.txt | 99 ++-- .../PublicAPI/net481/PublicAPI.txt | 99 ++-- .../PublicAPI/net8.0/PublicAPI.txt | 99 ++-- .../PublicAPI/net9.0/PublicAPI.txt | 99 ++-- .../ReactiveUIBindingBenchmark.cs | 2 +- .../ReactiveUIObservationBenchmark.cs | 2 +- .../Mocks/BenchmarkChildViewModel.cs | 2 +- .../Mocks/BenchmarkView.cs | 2 +- .../Mocks/BenchmarkViewModel.cs | 2 +- .../Documentation/Common/Banking/Account.cs | 2 +- .../Common/Banking/AccountsView.cs | 2 +- .../Common/Banking/AccountsViewModel.cs | 2 +- .../Common/Banking/BankingException.cs | 2 +- .../Common/Banking/InMemoryBankingBackend.cs | 2 +- .../Documentation/Common/Banking/Payee.cs | 2 +- .../Common/Banking/Transaction.cs | 2 +- .../Common/Banking/TransferDraft.cs | 2 +- .../Common/Banking/TransferReceipt.cs | 2 +- .../Common/Banking/TransferRequest.cs | 2 +- .../Common/Banking/TransferValidation.cs | 2 +- .../Common/Banking/TransferView.cs | 2 +- .../Common/Banking/TransferViewModel.cs | 2 +- .../Common/CloudStorage/Bucket.cs | 2 +- .../CloudStorage/InMemoryObjectStorage.cs | 2 +- .../Common/CloudStorage/StorageBrowserView.cs | 2 +- .../CloudStorage/StorageBrowserViewModel.cs | 2 +- .../Common/CloudStorage/StorageConnection.cs | 2 +- .../Common/CloudStorage/StorageException.cs | 2 +- .../Common/CloudStorage/StorageObject.cs | 2 +- .../Common/CloudStorage/UploadProgress.cs | 2 +- .../Common/CloudStorage/UploadRequest.cs | 2 +- .../Common/Education/Assignment.cs | 2 +- .../Documentation/Common/Education/Course.cs | 2 +- .../Common/Education/DropRequest.cs | 2 +- .../Common/Education/Enrolment.cs | 2 +- .../Documentation/Common/Education/Grade.cs | 2 +- .../Common/Education/GradebookView.cs | 2 +- .../Common/Education/GradebookViewModel.cs | 2 +- .../Education/InMemoryStudentRecords.cs | 2 +- .../Documentation/Common/Education/Student.cs | 2 +- .../Education/StudentRecordsException.cs | 2 +- .../Common/Education/Submission.cs | 2 +- .../Common/GitHub/GitHubApiException.cs | 2 +- .../Common/GitHub/InMemoryGitHubServer.cs | 2 +- .../Documentation/Common/GitHub/Issue.cs | 2 +- .../Common/GitHub/IssueBoardView.cs | 2 +- .../Common/GitHub/IssueBoardViewModel.cs | 2 +- .../Common/GitHub/IssueComment.cs | 2 +- .../Documentation/Common/GitHub/Repository.cs | 2 +- .../Documentation/Common/GitHub/User.cs | 2 +- .../Common/Todo/InMemoryTodoStore.cs | 2 +- .../Documentation/Common/Todo/TodoItem.cs | 2 +- .../Common/Todo/TodoListViewModel.cs | 2 +- .../Documentation/Common/Todo/TodoView.cs | 2 +- .../Pages/bindings/AccountNameView.cs | 2 +- .../Pages/bindings/AuditedInteraction.cs | 2 +- .../Pages/bindings/AuditingOutputContext.cs | 2 +- .../Pages/bindings/CurrencyTextConverter.cs | 2 +- .../Pages/bindings/IssueTriageView.cs | 2 +- .../Pages/bindings/IssueTriageViewModel.cs | 2 +- .../Pages/bindings/LoggingBindingHook.cs | 2 +- .../Pages/bindings/PriorityColourConverter.cs | 2 +- .../Pages/bindings/ReadOnlyAccountHook.cs | 2 +- .../Pages/bindings/StatementExportView.cs | 2 +- .../bindings/StatementExportViewModel.cs | 2 +- .../Pages/bindings/StatementReferenceView.cs | 2 +- .../Pages/bindings/TodoHeadingView.cs | 2 +- .../Pages/bindings/TodoItemBadgeView.cs | 2 +- .../Pages/bindings/TodoTagFilterView.cs | 2 +- .../Pages/bindings/UploadPanelView.cs | 2 +- .../Pages/bindings/UploadPanelViewModel.cs | 2 +- .../custom-converters/AccountSummaryView.cs | 2 +- .../AccountsToViewsConverter.cs | 2 +- .../CurrencyTextConverter.cs | 2 +- .../CustomBoolToStringConverter.cs | 2 +- .../DemoIntToStringConverter.cs | 2 +- .../LegacyObjectToStringFallbackConverter.cs | 2 +- .../LegacyPriorityToColorConverter.cs | 2 +- .../LegacyTagListSetMethodConverter.cs | 2 +- .../PriorityColourConverter.cs | 2 +- .../PriorityMatchesHintConverter.cs | 2 +- .../TagListToTextConverter.cs | 2 +- .../TextToTagListConverter.cs | 2 +- .../Pages/mechanisms/DraftTodo.cs | 2 +- .../TodoPropertyObservableForProperty.cs | 2 +- .../Pages/observing/IssueDraft.cs | 2 +- .../Pages/observing/IssueSearchView.cs | 2 +- .../Pages/observing/IssueSearchViewModel.cs | 2 +- .../Pages/observing/RepositoryChannels.cs | 2 +- .../Pages/observing/TodoItemDraft.cs | 2 +- .../Pages/observing/TransferForm.cs | 2 +- .../ObservableAsPropertyAttributeExamples.cs | 15 + .../properties/PartialOwnEventViewModel.cs | 2 +- .../PartialProtectedBaseViewModel.cs | 2 +- .../Documentation/Pages/properties/Program.cs | 2 + .../Pages/properties/RaiseMethodViewModel.cs | 2 +- .../Pages/properties/StatusViewModel.cs | 32 ++ .../Pages/properties/SummaryViewModel.cs | 2 +- .../Pages/setup/ButtonCommandBinder.cs | 2 +- .../Documentation/Pages/setup/EditableTodo.cs | 2 +- .../setup/TodoItemObservableForProperty.cs | 2 +- .../Pages/setup/aot/TodoRowView.cs | 2 +- .../threading/Avalonia/AvaloniaTodoView.cs | 2 +- .../Avalonia/AvaloniaTransferView.cs | 2 +- .../threading/Avalonia/AvaloniaUploadView.cs | 2 +- .../Pages/threading/Maui/MauiTodoPage.cs | 2 +- .../Pages/threading/Maui/MauiTransferPage.cs | 2 +- .../threading/WinForms/WinFormsTodoForm.cs | 2 +- .../WinForms/WinFormsTransferForm.cs | 2 +- .../threading/WinForms/WinFormsUploadForm.cs | 2 +- .../Pages/threading/Wpf/WpfTodoWindow.cs | 2 +- .../Pages/threading/Wpf/WpfTransferWindow.cs | 2 +- .../Pages/threading/Wpf/WpfUploadWindow.cs | 2 +- .../Pages/unsafe/EditableTodoItem.cs | 2 +- .../Pages/unsafe/TodoHeadlineViewModel.cs | 2 +- .../Pages/views/AccountListView.cs | 2 +- .../Pages/views/AccountListViewModel.cs | 2 +- .../Pages/views/AccountStatementView.cs | 2 +- .../Pages/views/AccountSummaryView.cs | 2 +- .../Pages/views/ClosedAccountListViewModel.cs | 2 +- .../Pages/views/CompactAccountsView.cs | 2 +- .../Pages/views/DetailedAccountListView.cs | 2 +- .../Documentation/Pages/views/ReceiptView.cs | 2 +- .../Pages/views/TodoItemDetailView.cs | 2 +- .../Pages/views/TodoItemPreviewView.cs | 2 +- .../Pages/views/TodoViewLocator.cs | 2 +- .../Maui/MauiCounterViewModel.cs | 2 +- .../WinForms/WinFormsCounterViewModel.cs | 2 +- .../Wpf/WpfCommandViewModel.cs | 2 +- .../Wpf/WpfCounterViewModel.cs | 2 +- .../Wpf/WpfPlainCommandView.cs | 2 +- .../Common/AttributeViewModel.cs | 2 +- .../Common/CombinedOverloadsViewModel.cs | 2 +- .../Common/FieldEventViewModel.cs | 2 +- .../Common/ProtectedBaseViewModel.cs | 2 +- .../Common/RaiseMethodViewModel.cs | 2 +- .../Common/ReactiveObjectViewModel.cs | 2 +- .../Common/SourceItem.cs | 2 +- ...ng.SourceGenerators.Tests.Roslyn413.csproj | 2 + .../Helpers/CodeFixRunner.cs | 165 ++++++ ...#GeneratedBindingsAttributes.g.verified.cs | 12 + ...Model.ObservableAsProperties.g.verified.cs | 36 ++ ...Model.ObservableAsProperties.g.verified.cs | 2 +- .../ObservableAsPropertyGeneratorTests.cs | 256 +++++++++ .../ObservableAsPropertyMigrationTests.cs | 496 ++++++++++++++++++ ...veUI.Binding.SourceGenerators.Tests.csproj | 4 + .../ViewRegistrationCompatibilityTests.cs | 356 +++++++++++++ 240 files changed, 4992 insertions(+), 1832 deletions(-) create mode 100644 src/ReactiveUI.Binding.Analyzer/Analyzers/ObservableAsPropertyAnalyzer.cs create mode 100644 src/ReactiveUI.Binding.Analyzer/CodeFixes/ObservableAsPropertyCodeFixProvider.cs create mode 100644 src/ReactiveUI.Binding.Analyzer/CodeFixes/ObservableAsPropertyRewriter.cs create mode 100644 src/ReactiveUI.Binding.Shared/Bindings/ObservableAsPropertyInheritance.cs create mode 100644 src/ReactiveUI.Binding.SourceGenerators/Helpers/ObservableAsPropertyOptions.cs create mode 100644 src/examples/Documentation/Pages/properties/StatusViewModel.cs create mode 100644 src/tests/ReactiveUI.Binding.SourceGenerators.Tests/Helpers/CodeFixRunner.cs create mode 100644 src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.Options#GeneratedBindingsAttributes.g.verified.cs create mode 100644 src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.Options#TestApp.GaugeViewModel.ObservableAsProperties.g.verified.cs create mode 100644 src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyMigrationTests.cs create mode 100644 src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ViewRegistrationCompatibilityTests.cs diff --git a/CLAUDE.md b/CLAUDE.md index 51c7a037..6a457393 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -294,13 +294,16 @@ src/ ├── ReactiveUI.Binding.Analyzer.Roslyn413/ # The same analyzer source against Roslyn 4.13 │ ├── ReactiveUI.Binding.Analyzer/ # Roslyn analyzer (netstandard2.0) -│ └── Analyzers/ -│ ├── BindingInvocationAnalyzer.cs # RXUIBIND001, 003, 004, 005, 006, 007, 008 -│ ├── DispatchReachAnalyzer.cs # RXUIBIND009 -│ ├── ToPropertyAnalyzer.cs # RXUIBIND012, 013 -│ ├── ToPropertyInitialValueAnalyzer.cs # RXUIBIND014 -│ ├── UnreachableTypeAnalyzer.cs # RXUIBIND015, 016 -│ └── TypeAnalyzer.cs # RXUIBIND002 +│ ├── Analyzers/ +│ │ ├── BindingInvocationAnalyzer.cs # RXUIBIND001, 003, 004, 005, 006, 007, 008 +│ │ ├── DispatchReachAnalyzer.cs # RXUIBIND009 +│ │ ├── ObservableAsPropertyAnalyzer.cs # RXUIBIND018, 019 +│ │ ├── ToPropertyAnalyzer.cs # RXUIBIND012, 013 +│ │ ├── ToPropertyInitialValueAnalyzer.cs # RXUIBIND014 +│ │ ├── UnreachableTypeAnalyzer.cs # RXUIBIND015, 016 +│ │ └── TypeAnalyzer.cs # RXUIBIND002 +│ └── CodeFixes/ +│ └── ObservableAsPropertyCodeFixProvider.cs # RXUIBIND018: older [ObservableAsProperty] forms to partial properties │ ├── benchmarks/ │ ├── ReactiveUI.Binding.Benchmarks/ # Runtime binding benchmarks @@ -365,6 +368,15 @@ constructor resolves to null. `[ExcludeFromViewRegistration]` leaves a view out. A view is skipped when it, or a type it is nested in, is an open generic. A closed subclass of a generic view base registers through its own `IViewFor` interface. +Both runtime flavours are matched: `ReactiveUI.Binding.IViewFor` and `ReactiveUI.Binding.Reactive.IViewFor`. +The view attributes are read from the flavour of the interface the view implements. + +ReactiveUI.SourceGenerators' `[IViewFor]` and `[IViewFor("TypeName")]` also register a view. That generator adds +`IViewFor` to the class in output no other generator can see, so the attributes are matched by metadata name through +`ForAttributeWithMetadataName`. The type name is bound at the class's position, so usings, `nameof` and generic names +resolve. The resolver casts the view through `object` with `as`, because the class may not implement the interface. A +view found both ways registers once. A `RegistrationType` of `LazySingleton` or `Constant` is a `[SingleInstanceView]`. + The generated class registers the lookup with `DefaultViewLocator.SetGeneratedViewDispatch`. From C# 9 it does so in a module initializer, which runs before any code in the assembly. The generator declares `ModuleInitializerAttribute` when the framework has none. Older projects register in a static constructor, which @@ -757,6 +769,13 @@ writes the property's body and a `_{name}Helper` field, and the consumer assigns consumer declares the property, so every generator in the build sees it. A property written from a field would exist only in generated code, which no other generator can observe or bind, so that form is not offered. +The attribute's `InitialValue`, `ReadOnly` and `UseProtected` shape the generated members. A non-string +`InitialValue` is an expression held in a backing field. The generated file repeats the declaring file's `using` and +`extern alias` directives, so the expression binds as it was written. The attribute is also valid on a field, a method +and a property, the forms of ReactiveUI's older generator, so that code compiles. RXUIBIND018 reports them, and +`ObservableAsPropertyCodeFixProvider` rewrites them as partial properties; `PropertyName` and `Inheritance` exist only +for that rewrite. + ### One Body Per Reachable Branch The two dispatch mechanisms differ in what they can tell apart, and the emitted bodies follow. File-and-line @@ -884,6 +903,8 @@ Not all platforms support before-change notifications (WPF DP, WinUI DP, WinForm | RXUIBIND015 | Warning | Binding call names a type generated code cannot reach | | RXUIBIND016 | Warning | Binding call is made through a type parameter | | RXUIBIND017 | Warning | Binding writes to a UI object without its platform package | +| RXUIBIND018 | Warning | ObservableAsProperty needs a partial get-only property | +| RXUIBIND019 | Warning | ObservableAsProperty method takes parameters | ## Code Style & Quality Requirements diff --git a/README.md b/README.md index 358e7332..4b0b6eac 100644 --- a/README.md +++ b/README.md @@ -562,6 +562,29 @@ public partial class PersonViewModel : INotifyPropertyChanged The attribute ships in the runtime package, so the generator adds no types to your assembly. Two projects that see each other's internals both keep working. +The attribute takes these options. + +| Option | Effect | +|--------|--------| +| `InitialValue` | What the property returns until you assign its helper. For a `string` property it is the value, such as `"none"`. For any other type it is a C# expression, such as `"1.5d"`, evaluated once. A non-nullable `string` property with no initial value returns `string.Empty`. | +| `ReadOnly` | Makes the helper field `readonly`, so only a constructor can assign it. | +| `UseProtected` | Makes the helper field `protected` rather than `private`, so a derived type can assign it. | + +```csharp +[ObservableAsProperty(InitialValue = "Loading", ReadOnly = true)] +public partial string Status { get; } +``` + +ReactiveUI's older source generator also accepted `[ObservableAsProperty]` on a field, on a method that returns an +observable, and on an observable property. Nothing is generated for those forms. RXUIBIND018 reports each one, with a +code fix that rewrites it as a partial property: + +- A field becomes a property named after it, without its `_` or `m_` prefix. Its initializer becomes `InitialValue`, and + its `Inheritance` becomes a `virtual`, `override` or `new` modifier. +- A method or an observable property keeps its declaration and gains a property named `PropertyName`, or its own name + followed by `Property`. The fix writes an `InitializeOAPH` method that assigns each helper, which your constructor + already calls. + ### Observing a path built at run time `WhenAnyDynamic` takes the path as an `Expression`, not a lambda. So you can build the path from a property name @@ -581,7 +604,7 @@ path before you build, `WhenChanged` and `WhenAny` observe the same thing withou ## The view locator A view locator finds the view for a view model. Implement `IViewFor`, and the generator registers the view for -you. +you. This works with both the `ReactiveUI.Binding` and `ReactiveUI.Binding.Reactive` packages. ```csharp public class LoginView : IViewFor @@ -606,6 +629,11 @@ Three attributes change what is registered. | `[SingleInstanceView]` | Keeps one instance instead of creating a view each time. Do not use it for a view that appears more than once in the tree. | | `[ExcludeFromViewRegistration]` | Leaves the view out of the generated registration. | +A view that ReactiveUI.SourceGenerators completes with `[IViewFor]` or `[IViewFor("TypeName")]` is registered too. +That generator adds `IViewFor` to the class, so the generated lookup checks for the interface when it resolves the +view. A class it leaves alone resolves to null. A `RegistrationType` of `LazySingleton` or `Constant` keeps one +instance, created the first time the view resolves. + ```csharp [ViewContract("compact")] public class CompactDashboardView : IViewFor { } @@ -803,6 +831,8 @@ The analyzer ships inside the runtime packages. It reports these diagnostics. | RXUIBIND015 | Warning | The call names a private or protected nested type, which generated code cannot reach, so nothing is generated and the call throws. Make the type `internal` or `public`, or call the `Unsafe` overload. | | RXUIBIND016 | Warning | The call is made through a type parameter of the calling code, so generated code cannot name its types and the call throws. Call the `Unsafe` overload. | | RXUIBIND017 | Warning | The binding writes to a WPF, WinForms or MAUI object, but the matching `ReactiveUI.Binding.Wpf`, `.WinForms` or `.Maui` package is not referenced, so writes from another thread are not marshalled onto the object's thread. Reference the platform package. | +| RXUIBIND018 | Warning | `[ObservableAsProperty]` marks something other than a partial get-only instance property, so nothing is generated. For a field, a method or an observable property, a code fix rewrites it as a partial property (C# 13). | +| RXUIBIND019 | Warning | A method marked `[ObservableAsProperty]` takes parameters, so it cannot supply a property's values. | The package's build targets report one error of their own. diff --git a/src/ReactiveUI.Binding.Analyzer/AnalyzerReleases.Unshipped.md b/src/ReactiveUI.Binding.Analyzer/AnalyzerReleases.Unshipped.md index 1c41b0d6..1d2dd80f 100644 --- a/src/ReactiveUI.Binding.Analyzer/AnalyzerReleases.Unshipped.md +++ b/src/ReactiveUI.Binding.Analyzer/AnalyzerReleases.Unshipped.md @@ -19,3 +19,5 @@ RXUIBIND015 | Usage | Warning | Binding call names a type generated code cannot reach RXUIBIND016 | Usage | Warning | Binding call is made through a type parameter RXUIBIND017 | Usage | Warning | Binding writes to a UI object without its platform package + RXUIBIND018 | Usage | Warning | ObservableAsProperty needs a partial get-only property + RXUIBIND019 | Usage | Warning | ObservableAsProperty method takes parameters diff --git a/src/ReactiveUI.Binding.Analyzer/Analyzers/ObservableAsPropertyAnalyzer.cs b/src/ReactiveUI.Binding.Analyzer/Analyzers/ObservableAsPropertyAnalyzer.cs new file mode 100644 index 00000000..cf11f43a --- /dev/null +++ b/src/ReactiveUI.Binding.Analyzer/Analyzers/ObservableAsPropertyAnalyzer.cs @@ -0,0 +1,184 @@ +// Copyright (c) 2019-2026 ReactiveUI and Contributors. All rights reserved. +// ReactiveUI and Contributors licenses this file to you under the MIT license. +// See the LICENSE file in the project root for full license information. + +using System.Collections.Immutable; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; +using ReactiveUI.Binding.Helpers; +using ReactiveUI.Binding.SourceGenerators; + +namespace ReactiveUI.Binding.Analyzer.Analyzers; + +/// +/// Reports an [ObservableAsProperty] the generator writes nothing for (RXUIBIND018), and a method marked with it +/// that takes parameters (RXUIBIND019). +/// +/// +/// The generator only writes the body of a partial get-only instance property. ReactiveUI's older source generator also +/// accepted a field, a method and an observable property; the diagnostic for each of those carries the form in its +/// properties, so the code fix knows how to rewrite it. +/// +[DiagnosticAnalyzer(LanguageNames.CSharp)] +public class ObservableAsPropertyAnalyzer : DiagnosticAnalyzer +{ + /// The diagnostic property naming the form the code fix rewrites. + internal const string FormProperty = "Form"; + + /// The form of a field, whose value the property takes over. + internal const string FieldForm = "Field"; + + /// The form of a method returning the observable the property is built from. + internal const string MethodForm = "Method"; + + /// The form of a property returning the observable the property is built from. + internal const string ObservablePropertyForm = "ObservableProperty"; + + /// The attribute's metadata name in the lean runtime. + internal const string LeanAttributeName = "ReactiveUI.Binding.ObservableAsPropertyAttribute"; + + /// The attribute's metadata name in the System.Reactive runtime. + internal const string ReactiveAttributeName = "ReactiveUI.Binding.Reactive.ObservableAsPropertyAttribute"; + + /// The diagnostics this analyzer reports. + private static readonly ImmutableArray ReportedDiagnostics = + new[] { DiagnosticWarnings.ObservableAsPropertyNeedsPartialProperty, DiagnosticWarnings.ObservableAsPropertyMethodHasParameters }.ToImmutableArray(); + + /// + public override ImmutableArray SupportedDiagnostics => ReportedDiagnostics; + + /// + public override void Initialize(AnalysisContext context) + { + ArgumentExceptionHelper.ThrowIfNull(context); + context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); + context.EnableConcurrentExecution(); + context.RegisterCompilationStartAction(static start => + { + var lean = start.Compilation.GetTypeByMetadataName(LeanAttributeName); + var reactive = start.Compilation.GetTypeByMetadataName(ReactiveAttributeName); + if (lean is null && reactive is null) + { + return; + } + + var observable = start.Compilation.GetTypeByMetadataName("System.IObservable`1"); + start.RegisterSymbolAction( + symbolContext => AnalyzeSymbol(in symbolContext, lean, reactive, observable), + SymbolKind.Field, + SymbolKind.Method, + SymbolKind.Property); + }); + } + + /// Finds the [ObservableAsProperty] on a member, in either runtime flavour. + /// The member. + /// The lean runtime's attribute type, or null when it is not referenced. + /// The System.Reactive runtime's attribute type, or null when it is not referenced. + /// The attribute, or null when the member has none. + internal static AttributeData? FindAttribute(ISymbol symbol, INamedTypeSymbol? lean, INamedTypeSymbol? reactive) + { + var attributes = symbol.GetAttributes(); + for (var i = 0; i < attributes.Length; i++) + { + var type = attributes[i].AttributeClass; + if (SymbolEqualityComparer.Default.Equals(type, lean) || SymbolEqualityComparer.Default.Equals(type, reactive)) + { + return attributes[i]; + } + } + + return null; + } + + /// Returns the value type of an IObservable<T>. + /// The type to check. + /// The open IObservable<T>, or null when it does not resolve. + /// The type argument, or null when the type is not an IObservable<T>. + internal static ITypeSymbol? ObservedType(ITypeSymbol type, INamedTypeSymbol? observable) => + type is INamedTypeSymbol { TypeArguments: [var argument] } named + && SymbolEqualityComparer.Default.Equals(named.OriginalDefinition, observable) + ? argument + : null; + + /// Checks whether a property is declared the way the generator implements: a partial get-only instance property. + /// The property. + /// when the generator writes its body. + internal static bool IsGeneratedForm(IPropertySymbol property) + { + if (property.IsStatic) + { + return false; + } + + var references = property.DeclaringSyntaxReferences; + for (var i = 0; i < references.Length; i++) + { + if (references[i].GetSyntax() is PropertyDeclarationSyntax + { + ExpressionBody: null, + AccessorList.Accessors: [{ RawKind: (int)SyntaxKind.GetAccessorDeclaration, Body: null, ExpressionBody: null }], + } declaration + && declaration.Modifiers.Any(SyntaxKind.PartialKeyword)) + { + return true; + } + } + + return false; + } + + /// Reports a marked member the generator writes nothing for. + /// The symbol analysis context. + /// The lean runtime's attribute type, or null when it is not referenced. + /// The System.Reactive runtime's attribute type, or null when it is not referenced. + /// The open IObservable<T>, or null when it does not resolve. + private static void AnalyzeSymbol(in SymbolAnalysisContext context, INamedTypeSymbol? lean, INamedTypeSymbol? reactive, INamedTypeSymbol? observable) + { + var symbol = context.Symbol; + if (FindAttribute(symbol, lean, reactive) is null) + { + return; + } + + string? form; + switch (symbol) + { + case IPropertySymbol property when IsGeneratedForm(property): + { + return; + } + + case IPropertySymbol property: + { + form = !property.IsStatic && ObservedType(property.Type, observable) is not null ? ObservablePropertyForm : null; + break; + } + + case IMethodSymbol { Parameters.Length: > 0 }: + { + context.ReportDiagnostic(Diagnostic.Create(DiagnosticWarnings.ObservableAsPropertyMethodHasParameters, symbol.Locations[0], symbol.Name)); + return; + } + + case IMethodSymbol method: + { + form = !method.IsStatic && ObservedType(method.ReturnType, observable) is not null ? MethodForm : null; + break; + } + + default: + { + form = symbol.IsStatic ? null : FieldForm; + break; + } + } + + var properties = form is null + ? ImmutableDictionary.Empty + : ImmutableDictionary.Empty.Add(FormProperty, form); + context.ReportDiagnostic(Diagnostic.Create(DiagnosticWarnings.ObservableAsPropertyNeedsPartialProperty, symbol.Locations[0], properties, symbol.Name)); + } +} diff --git a/src/ReactiveUI.Binding.Analyzer/CodeFixes/ObservableAsPropertyCodeFixProvider.cs b/src/ReactiveUI.Binding.Analyzer/CodeFixes/ObservableAsPropertyCodeFixProvider.cs new file mode 100644 index 00000000..4120689f --- /dev/null +++ b/src/ReactiveUI.Binding.Analyzer/CodeFixes/ObservableAsPropertyCodeFixProvider.cs @@ -0,0 +1,167 @@ +// Copyright (c) 2019-2026 ReactiveUI and Contributors. All rights reserved. +// ReactiveUI and Contributors licenses this file to you under the MIT license. +// See the LICENSE file in the project root for full license information. + +using System.Collections.Immutable; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.CodeActions; +using Microsoft.CodeAnalysis.CodeFixes; +using ReactiveUI.Binding.Analyzer.Analyzers; +using ReactiveUI.Binding.SourceGenerators; + +namespace ReactiveUI.Binding.Analyzer.CodeFixes; + +/// +/// Rewrites the [ObservableAsProperty] forms ReactiveUI's older source generator accepted (a field, a method or an +/// observable property) as partial properties the generator implements (RXUIBIND018). +/// +/// +/// +/// Every marked member of a type is rewritten in one pass, because a method or an observable property adds a statement +/// to the same InitializeOAPH method. That method assigns each helper with ToProperty, and the constructor +/// calls it, as it called the one the older generator wrote. +/// +/// +/// A field becomes a property named after it, without its _ or m_ prefix. Its initializer becomes the +/// attribute's InitialValue, and its Inheritance a modifier. A method or an observable property keeps its +/// declaration, and gains a property named by PropertyName, or by its own name followed by Property. +/// Partial properties need C# 13, so the fix is offered from C# 13. +/// +/// +[ExportCodeFixProvider(LanguageNames.CSharp)] +public sealed class ObservableAsPropertyCodeFixProvider : CodeFixProvider +{ + /// The title of the code action, which also identifies it for fix-all. + internal const string Title = "Convert [ObservableAsProperty] members to partial properties"; + + /// The LanguageVersion value of C# 13, which Roslyn 4.8 does not name. + private const int CSharp13 = 1300; + + /// + public override ImmutableArray FixableDiagnosticIds { get; } = + new[] { DiagnosticWarnings.ObservableAsPropertyNeedsPartialProperty.Id }.ToImmutableArray(); + + /// + public override FixAllProvider GetFixAllProvider() => FixAllProvider.Create(FixAllInDocumentAsync); + + /// + public override async Task RegisterCodeFixesAsync(CodeFixContext context) + { + var diagnostic = context.Diagnostics[0]; + if (!IsFixable(diagnostic, context.Document)) + { + return; + } + + var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false); + var type = root!.FindNode(diagnostic.Location.SourceSpan).FirstAncestorOrSelf()!; + context.RegisterCodeFix( + CodeAction.Create(Title, ct => RewriteTypesAsync(context.Document, [type], ct), Title), + diagnostic); + } + + /// Checks whether a diagnostic names a form the fix rewrites, in a project that has partial properties. + /// The diagnostic. + /// The document it is in. + /// when the fix applies. + internal static bool IsFixable(Diagnostic diagnostic, Document document) => + diagnostic.Properties.ContainsKey(ObservableAsPropertyAnalyzer.FormProperty) + && document.Project.ParseOptions is CSharpParseOptions { LanguageVersion: var version } + && (int)version >= CSharp13; + + /// Rewrites every type in a document that holds a diagnosed member. + /// The fix-all context. + /// The document. + /// The diagnostics in the document. + /// The rewritten document, or null when nothing applies. + private static async Task FixAllInDocumentAsync(FixAllContext context, Document document, ImmutableArray diagnostics) + { + var root = await document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false); + var types = new List(); + for (var i = 0; i < diagnostics.Length; i++) + { + if (IsFixable(diagnostics[i], document) + && root!.FindNode(diagnostics[i].Location.SourceSpan).FirstAncestorOrSelf() is { } type + && !types.Contains(type)) + { + types.Add(type); + } + } + + return types.Count == 0 ? null : await RewriteTypesAsync(document, types, context.CancellationToken).ConfigureAwait(false); + } + + /// Rewrites the marked members of each type, and makes each type and every type around it partial. + /// The document. + /// The type declarations to rewrite. + /// Cancellation token. + /// The rewritten document. + private static async Task RewriteTypesAsync(Document document, List types, CancellationToken ct) + { + var root = (await document.GetSyntaxRootAsync(ct).ConfigureAwait(false))!; + var model = (await document.GetSemanticModelAsync(ct).ConfigureAwait(false))!; + var newLine = LineEnding(root); + var rewritten = new Dictionary(types.Count); + for (var i = 0; i < types.Count; i++) + { + rewritten[types[i]] = ObservableAsPropertyRewriter.RewriteType(types[i], model, newLine, ct); + } + + root = root.ReplaceNodes(rewritten.Keys, (original, _) => rewritten[original]); + return document.WithSyntaxRoot(MakeContainersPartial(root)); + } + + /// Reads the line ending a document uses. + /// The document root. + /// The first line ending in the document, or \n when it has none. + private static string LineEnding(SyntaxNode root) + { + foreach (var trivia in root.DescendantTrivia()) + { + if (trivia.IsKind(SyntaxKind.EndOfLineTrivia)) + { + return trivia.ToString(); + } + } + + return "\n"; + } + + /// Adds partial to every type that holds a written property, or holds a type that does. + /// The document root. + /// The root with the modifiers added. + private static SyntaxNode MakeContainersPartial(SyntaxNode root) + { + var needed = new HashSet(); + foreach (var annotated in root.GetAnnotatedNodes(ObservableAsPropertyRewriter.ConvertedKind)) + { + foreach (var ancestor in annotated.Ancestors()) + { + if (ancestor is TypeDeclarationSyntax type && !type.Modifiers.Any(SyntaxKind.PartialKeyword)) + { + _ = needed.Add(type); + } + } + } + + return needed.Count == 0 ? root : root.ReplaceNodes(needed, static (_, type) => AddPartial(type)); + } + + /// Adds the partial modifier just before a type's keyword. + /// The type declaration. + /// The declaration with the modifier. + private static TypeDeclarationSyntax AddPartial(TypeDeclarationSyntax type) + { + if (type.Modifiers.Count != 0) + { + return type.AddModifiers(SyntaxFactory.Token(SyntaxKind.PartialKeyword).WithTrailingTrivia(SyntaxFactory.Space)); + } + + var leading = type.Keyword.LeadingTrivia; + return type + .WithKeyword(type.Keyword.WithLeadingTrivia()) + .WithModifiers(SyntaxFactory.TokenList(SyntaxFactory.Token(leading, SyntaxKind.PartialKeyword, SyntaxFactory.TriviaList(SyntaxFactory.Space)))); + } +} diff --git a/src/ReactiveUI.Binding.Analyzer/CodeFixes/ObservableAsPropertyRewriter.cs b/src/ReactiveUI.Binding.Analyzer/CodeFixes/ObservableAsPropertyRewriter.cs new file mode 100644 index 00000000..188ee4c4 --- /dev/null +++ b/src/ReactiveUI.Binding.Analyzer/CodeFixes/ObservableAsPropertyRewriter.cs @@ -0,0 +1,460 @@ +// Copyright (c) 2019-2026 ReactiveUI and Contributors. All rights reserved. +// ReactiveUI and Contributors licenses this file to you under the MIT license. +// See the LICENSE file in the project root for full license information. + +using System.Runtime.CompilerServices; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using ReactiveUI.Binding.Analyzer.Analyzers; + +namespace ReactiveUI.Binding.Analyzer.CodeFixes; + +/// Rewrites the marked fields, methods and observable properties of one type as partial properties. +internal static class ObservableAsPropertyRewriter +{ + /// The annotation marking a property the rewrite wrote, so its containing types can be made partial. + internal const string ConvertedKind = "ReactiveUI.Binding.ObservableAsPropertyConverted"; + + /// The name of the method that assigns the helpers of methods and observable properties. + internal const string InitializeMethodName = "InitializeOAPH"; + + /// The prefix some field names start with, which the property name drops. + private const string MemberPrefix = "m_"; + + /// One level of indentation inside a method body. + private const string BodyIndent = " "; + + /// The attribute arguments a field keeps; its initializer replaces InitialValue, and Inheritance becomes a modifier. + private static readonly string[] FieldArguments = ["ReadOnly", "UseProtected"]; + + /// The attribute arguments a method or observable property keeps; its helper was never readonly. + private static readonly string[] SourceArguments = ["UseProtected", "InitialValue"]; + + /// The type format a written property repeats, nullable annotation included. + private static readonly SymbolDisplayFormat TypeFormat = SymbolDisplayFormat.MinimallyQualifiedFormat + .AddMiscellaneousOptions(SymbolDisplayMiscellaneousOptions.IncludeNullableReferenceTypeModifier); + + /// Rewrites every marked field, method and observable property of a type. + /// The type declaration. + /// The semantic model of the document. + /// The line ending the document uses. + /// Cancellation token. + /// The rewritten declaration. + internal static TypeDeclarationSyntax RewriteType(TypeDeclarationSyntax type, SemanticModel model, string newLine, CancellationToken ct) + { + var context = new RewriteContext(model, newLine, IndentOf(type), ct); + var members = new List(type.Members.Count + 1); + for (var i = 0; i < type.Members.Count; i++) + { + var member = type.Members[i]; + var converted = member switch + { + FieldDeclarationSyntax field => ConvertField(field, context), + MethodDeclarationSyntax or PropertyDeclarationSyntax => ConvertSource(member, context), + _ => null, + }; + + if (converted is null) + { + members.Add(member); + continue; + } + + members.AddRange(converted); + } + + if (context.Statements.Count != 0) + { + AddInitializeStatements(members, context); + } + + var rewritten = type.WithMembers(SyntaxFactory.List(members)); + return context.Renames.Count == 0 ? rewritten : (TypeDeclarationSyntax)new IdentifierRenamer(context.Renames).Visit(rewritten); + } + + /// Names the property a field becomes: without its _ or m_ prefix, and starting upper case. + /// The field name. + /// The property name, or an empty string when nothing is left of the name. + internal static string PropertyNameFromField(string fieldName) + { + var name = fieldName.StartsWith(MemberPrefix, StringComparison.Ordinal) ? fieldName[MemberPrefix.Length..] : fieldName.TrimStart('_'); + return name.Length == 0 ? name : $"{char.ToUpperInvariant(name[0])}{name[1..]}"; + } + + /// Names the helper field the generator writes for a property. + /// The property name. + /// _{name}Helper, with the first letter lowered. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static string HelperName(string propertyName) => + $"_{char.ToLowerInvariant(propertyName[0])}{propertyName[1..]}Helper"; + + /// Rewrites a marked field as the partial property it backs. + /// The field declaration. + /// The rewrite's shared state. + /// The property, or null when the field is not marked or cannot be rewritten. + private static MemberDeclarationSyntax[]? ConvertField(FieldDeclarationSyntax field, RewriteContext context) + { + if (field.Declaration.Variables is not [var variable] + || context.Model.GetDeclaredSymbol(variable, context.Ct) is not IFieldSymbol { IsStatic: false } symbol + || context.FindAttribute(symbol) is not { } attribute) + { + return null; + } + + var name = variable.Identifier.ValueText; + var propertyName = PropertyNameFromField(name); + if (propertyName.Length == 0 || propertyName == name + || InitialValueArgument(variable.Initializer?.Value, symbol.Type) is not { } initialValue) + { + return null; + } + + var arguments = KeptArguments(attribute, FieldArguments); + if (initialValue.Length != 0) + { + arguments.Add($"InitialValue = {initialValue}"); + } + + var lines = new List { AttributeText(attribute, arguments) }; + AddMovedAttributes(lines, field.AttributeLists, attribute, includeUntargeted: true); + var declaration = $"public {InheritanceModifier(attribute)}partial {field.Declaration.Type.ToString().Trim()}"; + var property = BuildProperty(lines, declaration, propertyName, context) + .WithLeadingTrivia(field.GetLeadingTrivia()) + .WithTrailingTrivia(field.GetTrailingTrivia()); + + context.Renames[name] = propertyName; + var oldHelper = $"{name}Helper"; + var newHelper = HelperName(propertyName); + if (oldHelper != newHelper) + { + context.Renames[oldHelper] = newHelper; + } + + return [property]; + } + + /// Keeps a marked method or observable property, and adds the partial property its values back. + /// The method or property declaration. + /// The rewrite's shared state. + /// The member without the attribute and the new property, or null when it is not a form to rewrite. + private static MemberDeclarationSyntax[]? ConvertSource(MemberDeclarationSyntax member, RewriteContext context) + { + var (symbol, returnType, call) = context.Model.GetDeclaredSymbol(member, context.Ct) switch + { + IMethodSymbol { IsStatic: false, Parameters.Length: 0 } method => ((ISymbol?)method, method.ReturnType, $"{method.Name}()"), + IPropertySymbol { IsStatic: false } candidate when !ObservableAsPropertyAnalyzer.IsGeneratedForm(candidate) => (candidate, candidate.Type, candidate.Name), + _ => (null, null, null), + }; + + if (symbol is null + || context.FindAttribute(symbol) is not { } attribute + || ObservableAsPropertyAnalyzer.ObservedType(returnType!, context.Observable) is not { } valueType) + { + return null; + } + + var propertyName = NamedString(attribute, "PropertyName") ?? $"{symbol.Name}Property"; + var lines = new List { AttributeText(attribute, KeptArguments(attribute, SourceArguments)) }; + AddMovedAttributes(lines, member.AttributeLists, attribute, includeUntargeted: false); + var typeText = valueType.ToMinimalDisplayString(context.Model, member.SpanStart, TypeFormat); + var property = BuildProperty(lines, $"public partial {typeText}", propertyName, context) + .WithLeadingTrivia(SyntaxFactory.EndOfLine(context.NewLine), SyntaxFactory.Whitespace(context.Indent)) + .WithTrailingTrivia(SyntaxFactory.EndOfLine(context.NewLine)); + + context.Statements.Add($"{HelperName(propertyName)} = {call}.ToProperty(this, nameof({propertyName}));"); + return [WithoutMovedAttributes(member, attribute), property]; + } + + /// Writes a property declaration below its attribute lines. + /// The attribute lists, one per line. + /// The modifiers and the property type. + /// The property name. + /// The rewrite's shared state. + /// The parsed declaration, marked as converted. + private static MemberDeclarationSyntax BuildProperty(List attributeLines, string modifiersAndType, string name, RewriteContext context) + { + var separator = context.NewLine + context.Indent; + var text = $"{string.Join(separator, attributeLines)}{separator}{modifiersAndType} {name} {{ get; }}"; + return SyntaxFactory.ParseMemberDeclaration(text)!.WithAdditionalAnnotations(new SyntaxAnnotation(ConvertedKind)); + } + + /// Adds the helper assignments to the type's InitializeOAPH, writing the method when the type has none. + /// The type's members so far. + /// The rewrite's shared state. + private static void AddInitializeStatements(List members, RewriteContext context) + { + for (var i = 0; i < members.Count; i++) + { + if (members[i] is not MethodDeclarationSyntax { Identifier.ValueText: InitializeMethodName, ParameterList.Parameters.Count: 0, Body: { } body } existing) + { + continue; + } + + var statements = body.Statements; + for (var s = 0; s < context.Statements.Count; s++) + { + statements = statements.Add(SyntaxFactory.ParseStatement(context.Statements[s]) + .WithLeadingTrivia(SyntaxFactory.Whitespace(context.Indent + BodyIndent)) + .WithTrailingTrivia(SyntaxFactory.EndOfLine(context.NewLine))); + } + + members[i] = existing.WithBody(body.WithStatements(statements)); + return; + } + + var separator = context.NewLine + context.Indent; + var text = new System.Text.StringBuilder() + .Append("/// Assigns the helpers of the properties built from observables. Call it from the constructor.") + .Append(separator).Append("protected void ").Append(InitializeMethodName).Append("()") + .Append(separator).Append('{'); + for (var s = 0; s < context.Statements.Count; s++) + { + _ = text.Append(separator).Append(BodyIndent).Append(context.Statements[s]); + } + + _ = text.Append(separator).Append('}').Append(context.NewLine); + + // The doc comment parses as the method's leading trivia; a blank line and the indentation go in front of it. + var method = SyntaxFactory.ParseMemberDeclaration(text.ToString())!; + var leading = SyntaxFactory.TriviaList(SyntaxFactory.EndOfLine(context.NewLine), SyntaxFactory.Whitespace(context.Indent)) + .AddRange(method.GetLeadingTrivia()); + members.Add(method.WithLeadingTrivia(leading)); + } + + /// Writes the value of the InitialValue argument a field's initializer becomes. + /// The initializer, or null. + /// The field type. + /// + /// The argument's expression, an empty string for no initializer, or null when a string field is initialised with + /// something other than a literal, which InitialValue cannot hold. + /// + private static string? InitialValueArgument(ExpressionSyntax? initializer, ITypeSymbol type) + { + if (initializer is null) + { + return string.Empty; + } + + if (type.SpecialType != SpecialType.System_String) + { + return SymbolDisplay.FormatLiteral(initializer.ToString(), true); + } + + return initializer is LiteralExpressionSyntax { RawKind: (int)SyntaxKind.StringLiteralExpression } literal + ? SymbolDisplay.FormatLiteral(literal.Token.ValueText, true) + : null; + } + + /// Returns the modifier a field's Inheritance argument names, read from its syntax so either enum works. + /// The attribute. + /// virtual , override , new , or an empty string. + private static string InheritanceModifier(AttributeData attribute) => + FindArgument(attribute, "Inheritance")?.Expression switch + { + MemberAccessExpressionSyntax { Name.Identifier.ValueText: "Virtual" } => "virtual ", + MemberAccessExpressionSyntax { Name.Identifier.ValueText: "Override" } => "override ", + MemberAccessExpressionSyntax { Name.Identifier.ValueText: "New" } => "new ", + _ => string.Empty, + }; + + /// Reads a named string argument of the attribute. + /// The attribute. + /// The argument name. + /// The value, or null when the argument is absent. + private static string? NamedString(AttributeData attribute, string name) + { + var arguments = attribute.NamedArguments; + for (var i = 0; i < arguments.Length; i++) + { + if (arguments[i].Key == name && arguments[i].Value.Value is string value) + { + return value; + } + } + + return null; + } + + /// Finds a named argument's syntax on the attribute. + /// The attribute. + /// The argument name. + /// The argument, or null when it is absent. + private static AttributeArgumentSyntax? FindArgument(AttributeData attribute, string name) + { + var arguments = SyntaxOf(attribute).ArgumentList?.Arguments ?? default; + for (var i = 0; i < arguments.Count; i++) + { + if (arguments[i].NameEquals?.Name.Identifier.ValueText == name) + { + return arguments[i]; + } + } + + return null; + } + + /// Copies the named arguments the new attribute keeps, as written. + /// The attribute. + /// The names of the arguments to keep. + /// The arguments' text. + private static List KeptArguments(AttributeData attribute, string[] kept) + { + var result = new List(); + var arguments = SyntaxOf(attribute).ArgumentList?.Arguments ?? default; + for (var i = 0; i < arguments.Count; i++) + { + if (arguments[i].NameEquals is { } name && Array.IndexOf(kept, name.Name.Identifier.ValueText) >= 0) + { + result.Add(arguments[i].ToString().Trim()); + } + } + + return result; + } + + /// Writes the attribute as it is spelled, with the given arguments. + /// The attribute. + /// The arguments. + /// The attribute list's text. + private static string AttributeText(AttributeData attribute, List arguments) + { + var name = SyntaxOf(attribute).Name.ToString(); + return arguments.Count == 0 ? $"[{name}]" : $"[{name}({string.Join(", ", arguments)})]"; + } + + /// + /// Adds the attributes that move onto the new property: those targeted at property: or field:, and for a + /// field, the untargeted ones too, since the field is gone. + /// + /// The attribute lines of the new property. + /// The member's attribute lists. + /// The [ObservableAsProperty], which is rewritten separately. + /// Whether untargeted attributes move as well. + private static void AddMovedAttributes(List lines, SyntaxList lists, AttributeData attribute, bool includeUntargeted) + { + var own = SyntaxOf(attribute); + foreach (var list in lists) + { + if (list.Target is null && !includeUntargeted) + { + continue; + } + + var moved = new List(list.Attributes.Count); + foreach (var candidate in list.Attributes) + { + if (candidate != own) + { + moved.Add(candidate.ToString()); + } + } + + if (moved.Count != 0) + { + lines.Add($"[{string.Join(", ", moved)}]"); + } + } + } + + /// Removes the [ObservableAsProperty] and the targeted attributes that moved from a member. + /// The member. + /// The [ObservableAsProperty]. + /// The member without them, keeping its leading trivia. + private static MemberDeclarationSyntax WithoutMovedAttributes(MemberDeclarationSyntax member, AttributeData attribute) + { + var own = SyntaxOf(attribute); + var kept = new List(); + foreach (var list in member.AttributeLists) + { + if (list.Target is not null) + { + continue; + } + + var remaining = new List(list.Attributes.Count); + foreach (var candidate in list.Attributes) + { + if (candidate != own) + { + remaining.Add(candidate); + } + } + + if (remaining.Count != 0) + { + kept.Add(list.WithAttributes(SyntaxFactory.SeparatedList(remaining))); + } + } + + return member.WithAttributeLists(SyntaxFactory.List(kept)).WithLeadingTrivia(member.GetLeadingTrivia()); + } + + /// Returns the syntax an attribute was written with. + /// The attribute, which is always applied in source here. + /// The attribute syntax. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static AttributeSyntax SyntaxOf(AttributeData attribute) => + (AttributeSyntax)attribute.ApplicationSyntaxReference!.GetSyntax(); + + /// Reads the indentation of a type's members. + /// The type declaration, which holds at least the marked member. + /// The whitespace before its first member. + private static string IndentOf(TypeDeclarationSyntax type) + { + var leading = type.Members[0].GetLeadingTrivia(); + return leading.Count != 0 && leading[leading.Count - 1].IsKind(SyntaxKind.WhitespaceTrivia) ? leading[leading.Count - 1].ToString() : string.Empty; + } + + /// The state one rewrite of a type shares between its members. + /// The semantic model of the document. + /// The line ending the document uses. + /// The indentation of the type's members. + /// Cancellation token. + private sealed class RewriteContext(SemanticModel model, string newLine, string indent, CancellationToken ct) + { + /// Gets the semantic model of the document. + public SemanticModel Model { get; } = model; + + /// Gets the line ending the document uses. + public string NewLine { get; } = newLine; + + /// Gets the indentation of the type's members. + public string Indent { get; } = indent; + + /// Gets the cancellation token. + public CancellationToken Ct { get; } = ct; + + /// Gets the open IObservable<T>. + public INamedTypeSymbol? Observable { get; } = model.Compilation.GetTypeByMetadataName("System.IObservable`1"); + + /// Gets the helper assignments InitializeOAPH makes. + public List Statements { get; } = []; + + /// Gets the identifiers to rename: a field to its property, and its old helper name to the new one. + public Dictionary Renames { get; } = [with(StringComparer.Ordinal)]; + + /// Gets the lean runtime's attribute type, or null when it is not referenced. + private INamedTypeSymbol? Lean { get; } = model.Compilation.GetTypeByMetadataName(ObservableAsPropertyAnalyzer.LeanAttributeName); + + /// Gets the System.Reactive runtime's attribute type, or null when it is not referenced. + private INamedTypeSymbol? Reactive { get; } = model.Compilation.GetTypeByMetadataName(ObservableAsPropertyAnalyzer.ReactiveAttributeName); + + /// Finds the [ObservableAsProperty] on a member. + /// The member. + /// The attribute, or null when the member has none. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public AttributeData? FindAttribute(ISymbol symbol) => ObservableAsPropertyAnalyzer.FindAttribute(symbol, Lean, Reactive); + } + + /// Renames identifiers that named a removed field or its helper. + /// The old names and the names that replace them. + private sealed class IdentifierRenamer(Dictionary renames) : CSharpSyntaxRewriter + { + /// + public override SyntaxNode? VisitIdentifierName(IdentifierNameSyntax node) => + renames.TryGetValue(node.Identifier.ValueText, out var name) + ? node.WithIdentifier(SyntaxFactory.Identifier(name).WithTriviaFrom(node.Identifier)) + : node; + } +} diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-ios/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-ios/PublicAPI.txt index e2f6147e..b0deed44 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-ios/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-ios/PublicAPI.txt @@ -54,7 +54,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -80,7 +80,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -96,7 +96,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -110,7 +110,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -138,7 +138,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -176,7 +176,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -197,7 +197,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -220,7 +220,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -237,7 +237,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -253,7 +253,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -369,7 +369,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -386,7 +386,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -397,7 +397,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -405,7 +405,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -428,7 +428,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -463,7 +463,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -480,7 +480,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -503,7 +503,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -520,7 +520,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -537,7 +537,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -554,7 +554,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -583,12 +583,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -619,7 +625,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -837,7 +850,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1628,7 +1641,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1636,7 +1649,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1658,7 +1671,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1675,7 +1688,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1876,7 +1889,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1893,7 +1906,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1921,7 +1934,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1959,7 +1972,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2157,7 +2170,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2170,7 +2183,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2247,7 +2260,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2289,28 +2302,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2322,28 +2335,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-maccatalyst/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-maccatalyst/PublicAPI.txt index c2a7fe54..0b4be8be 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-maccatalyst/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-maccatalyst/PublicAPI.txt @@ -54,7 +54,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -80,7 +80,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -96,7 +96,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -110,7 +110,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -138,7 +138,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -176,7 +176,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -197,7 +197,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -220,7 +220,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -237,7 +237,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -253,7 +253,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -369,7 +369,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -386,7 +386,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -397,7 +397,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -405,7 +405,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -428,7 +428,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -463,7 +463,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -480,7 +480,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -503,7 +503,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -520,7 +520,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -537,7 +537,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -554,7 +554,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -583,12 +583,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -619,7 +625,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -837,7 +850,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1628,7 +1641,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1636,7 +1649,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1658,7 +1671,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1675,7 +1688,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1876,7 +1889,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1893,7 +1906,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1921,7 +1934,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1959,7 +1972,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2157,7 +2170,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2170,7 +2183,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2247,7 +2260,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2289,28 +2302,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2322,28 +2335,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-macos/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-macos/PublicAPI.txt index b9e23e20..847cb047 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-macos/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-macos/PublicAPI.txt @@ -54,7 +54,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -80,7 +80,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -96,7 +96,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -110,7 +110,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -138,7 +138,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -176,7 +176,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -197,7 +197,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -220,7 +220,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -237,7 +237,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -253,7 +253,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -369,7 +369,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -386,7 +386,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -397,7 +397,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -405,7 +405,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -428,7 +428,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -463,7 +463,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -480,7 +480,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -503,7 +503,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -520,7 +520,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -537,7 +537,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -554,7 +554,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -583,12 +583,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -619,7 +625,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -837,7 +850,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1628,7 +1641,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1636,7 +1649,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1658,7 +1671,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1675,7 +1688,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1876,7 +1889,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1893,7 +1906,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1921,7 +1934,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1959,7 +1972,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2169,7 +2182,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2182,7 +2195,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2259,7 +2272,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2301,28 +2314,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2334,28 +2347,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-tvos/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-tvos/PublicAPI.txt index f31e206b..470c90dc 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-tvos/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0-tvos/PublicAPI.txt @@ -54,7 +54,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -80,7 +80,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -96,7 +96,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -110,7 +110,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -138,7 +138,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -176,7 +176,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -197,7 +197,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -220,7 +220,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -237,7 +237,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -253,7 +253,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -369,7 +369,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -386,7 +386,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -397,7 +397,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -405,7 +405,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -428,7 +428,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -463,7 +463,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -480,7 +480,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -503,7 +503,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -520,7 +520,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -537,7 +537,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -554,7 +554,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -583,12 +583,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -619,7 +625,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -837,7 +850,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1628,7 +1641,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1636,7 +1649,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1658,7 +1671,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1675,7 +1688,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1876,7 +1889,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1893,7 +1906,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1921,7 +1934,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1959,7 +1972,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2157,7 +2170,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2170,7 +2183,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2247,7 +2260,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2289,28 +2302,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2322,28 +2335,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0/PublicAPI.txt index a9c26914..659ff437 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net10.0/PublicAPI.txt @@ -53,7 +53,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -79,7 +79,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -95,7 +95,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -109,7 +109,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -137,7 +137,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -175,7 +175,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -196,7 +196,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -219,7 +219,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -236,7 +236,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -252,7 +252,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -368,7 +368,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -385,7 +385,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -396,7 +396,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -404,7 +404,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -427,7 +427,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -462,7 +462,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -479,7 +479,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -502,7 +502,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -519,7 +519,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -536,7 +536,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -553,7 +553,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -582,12 +582,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -618,7 +624,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -836,7 +849,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1627,7 +1640,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1635,7 +1648,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1657,7 +1670,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1674,7 +1687,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1875,7 +1888,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1892,7 +1905,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1920,7 +1933,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1958,7 +1971,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2156,7 +2169,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2169,7 +2182,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2246,7 +2259,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2288,21 +2301,21 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2314,28 +2327,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-ios/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-ios/PublicAPI.txt index e2f6147e..b0deed44 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-ios/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-ios/PublicAPI.txt @@ -54,7 +54,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -80,7 +80,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -96,7 +96,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -110,7 +110,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -138,7 +138,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -176,7 +176,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -197,7 +197,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -220,7 +220,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -237,7 +237,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -253,7 +253,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -369,7 +369,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -386,7 +386,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -397,7 +397,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -405,7 +405,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -428,7 +428,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -463,7 +463,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -480,7 +480,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -503,7 +503,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -520,7 +520,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -537,7 +537,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -554,7 +554,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -583,12 +583,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -619,7 +625,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -837,7 +850,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1628,7 +1641,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1636,7 +1649,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1658,7 +1671,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1675,7 +1688,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1876,7 +1889,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1893,7 +1906,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1921,7 +1934,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1959,7 +1972,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2157,7 +2170,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2170,7 +2183,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2247,7 +2260,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2289,28 +2302,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2322,28 +2335,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-maccatalyst/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-maccatalyst/PublicAPI.txt index c2a7fe54..0b4be8be 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-maccatalyst/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-maccatalyst/PublicAPI.txt @@ -54,7 +54,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -80,7 +80,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -96,7 +96,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -110,7 +110,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -138,7 +138,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -176,7 +176,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -197,7 +197,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -220,7 +220,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -237,7 +237,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -253,7 +253,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -369,7 +369,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -386,7 +386,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -397,7 +397,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -405,7 +405,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -428,7 +428,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -463,7 +463,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -480,7 +480,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -503,7 +503,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -520,7 +520,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -537,7 +537,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -554,7 +554,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -583,12 +583,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -619,7 +625,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -837,7 +850,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1628,7 +1641,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1636,7 +1649,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1658,7 +1671,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1675,7 +1688,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1876,7 +1889,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1893,7 +1906,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1921,7 +1934,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1959,7 +1972,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2157,7 +2170,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2170,7 +2183,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2247,7 +2260,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2289,28 +2302,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2322,28 +2335,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-macos/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-macos/PublicAPI.txt index 153017a1..cc89f42c 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-macos/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-macos/PublicAPI.txt @@ -54,7 +54,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -80,7 +80,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -96,7 +96,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -110,7 +110,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -138,7 +138,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -176,7 +176,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -197,7 +197,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -220,7 +220,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -237,7 +237,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -253,7 +253,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -369,7 +369,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -386,7 +386,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -397,7 +397,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -405,7 +405,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -428,7 +428,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -463,7 +463,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -480,7 +480,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -503,7 +503,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -520,7 +520,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -537,7 +537,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -554,7 +554,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -583,12 +583,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -619,7 +625,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -837,7 +850,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1628,7 +1641,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1636,7 +1649,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1658,7 +1671,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1675,7 +1688,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1876,7 +1889,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1893,7 +1906,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1921,7 +1934,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1959,7 +1972,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2169,7 +2182,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2182,7 +2195,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2259,7 +2272,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2301,28 +2314,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2334,28 +2347,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-tvos/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-tvos/PublicAPI.txt index 1ce2ea71..b761bdc7 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-tvos/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0-tvos/PublicAPI.txt @@ -54,7 +54,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -80,7 +80,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -96,7 +96,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -110,7 +110,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -138,7 +138,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -176,7 +176,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -197,7 +197,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -220,7 +220,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -237,7 +237,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -253,7 +253,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -369,7 +369,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -386,7 +386,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -397,7 +397,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -405,7 +405,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -428,7 +428,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -463,7 +463,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -480,7 +480,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -503,7 +503,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -520,7 +520,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -537,7 +537,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -554,7 +554,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -583,12 +583,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -619,7 +625,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -837,7 +850,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1628,7 +1641,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1636,7 +1649,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1658,7 +1671,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1675,7 +1688,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1876,7 +1889,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1893,7 +1906,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1921,7 +1934,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1959,7 +1972,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2157,7 +2170,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2170,7 +2183,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2247,7 +2260,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2289,28 +2302,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2322,28 +2335,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0/PublicAPI.txt index a9c26914..659ff437 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net11.0/PublicAPI.txt @@ -53,7 +53,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -79,7 +79,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -95,7 +95,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -109,7 +109,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -137,7 +137,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -175,7 +175,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -196,7 +196,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -219,7 +219,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -236,7 +236,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -252,7 +252,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -368,7 +368,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -385,7 +385,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -396,7 +396,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -404,7 +404,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -427,7 +427,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -462,7 +462,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -479,7 +479,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -502,7 +502,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -519,7 +519,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -536,7 +536,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -553,7 +553,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -582,12 +582,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -618,7 +624,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -836,7 +849,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1627,7 +1640,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1635,7 +1648,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1657,7 +1670,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1674,7 +1687,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1875,7 +1888,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1892,7 +1905,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1920,7 +1933,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1958,7 +1971,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2156,7 +2169,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2169,7 +2182,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2246,7 +2259,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2288,21 +2301,21 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2314,28 +2327,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net462/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net462/PublicAPI.txt index 754ac36f..9fc9849e 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net462/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net462/PublicAPI.txt @@ -41,7 +41,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -67,7 +67,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -83,7 +83,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -97,7 +97,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -125,7 +125,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -157,7 +157,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -178,7 +178,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -200,7 +200,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -217,7 +217,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -233,7 +233,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -348,7 +348,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -365,7 +365,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -376,7 +376,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -407,7 +407,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -436,7 +436,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -453,7 +453,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -476,7 +476,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -493,7 +493,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -510,7 +510,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -527,7 +527,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -550,12 +550,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -586,7 +592,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -804,7 +817,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1329,7 +1342,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1337,7 +1350,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1359,7 +1372,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1376,7 +1389,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1547,7 +1560,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1564,7 +1577,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1592,7 +1605,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1630,7 +1643,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -1807,7 +1820,7 @@ namespace ReactiveUI.Binding.Reactive.Mixins namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -1820,7 +1833,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -1883,7 +1896,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -1925,21 +1938,21 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -1951,28 +1964,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net47/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net47/PublicAPI.txt index 754ac36f..9fc9849e 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net47/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net47/PublicAPI.txt @@ -41,7 +41,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -67,7 +67,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -83,7 +83,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -97,7 +97,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -125,7 +125,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -157,7 +157,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -178,7 +178,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -200,7 +200,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -217,7 +217,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -233,7 +233,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -348,7 +348,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -365,7 +365,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -376,7 +376,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -407,7 +407,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -436,7 +436,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -453,7 +453,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -476,7 +476,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -493,7 +493,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -510,7 +510,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -527,7 +527,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -550,12 +550,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -586,7 +592,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -804,7 +817,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1329,7 +1342,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1337,7 +1350,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1359,7 +1372,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1376,7 +1389,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1547,7 +1560,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1564,7 +1577,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1592,7 +1605,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1630,7 +1643,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -1807,7 +1820,7 @@ namespace ReactiveUI.Binding.Reactive.Mixins namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -1820,7 +1833,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -1883,7 +1896,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -1925,21 +1938,21 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -1951,28 +1964,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net471/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net471/PublicAPI.txt index 754ac36f..9fc9849e 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net471/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net471/PublicAPI.txt @@ -41,7 +41,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -67,7 +67,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -83,7 +83,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -97,7 +97,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -125,7 +125,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -157,7 +157,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -178,7 +178,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -200,7 +200,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -217,7 +217,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -233,7 +233,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -348,7 +348,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -365,7 +365,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -376,7 +376,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -407,7 +407,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -436,7 +436,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -453,7 +453,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -476,7 +476,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -493,7 +493,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -510,7 +510,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -527,7 +527,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -550,12 +550,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -586,7 +592,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -804,7 +817,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1329,7 +1342,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1337,7 +1350,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1359,7 +1372,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1376,7 +1389,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1547,7 +1560,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1564,7 +1577,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1592,7 +1605,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1630,7 +1643,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -1807,7 +1820,7 @@ namespace ReactiveUI.Binding.Reactive.Mixins namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -1820,7 +1833,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -1883,7 +1896,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -1925,21 +1938,21 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -1951,28 +1964,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net472/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net472/PublicAPI.txt index 754ac36f..9fc9849e 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net472/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net472/PublicAPI.txt @@ -41,7 +41,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -67,7 +67,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -83,7 +83,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -97,7 +97,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -125,7 +125,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -157,7 +157,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -178,7 +178,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -200,7 +200,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -217,7 +217,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -233,7 +233,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -348,7 +348,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -365,7 +365,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -376,7 +376,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -407,7 +407,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -436,7 +436,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -453,7 +453,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -476,7 +476,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -493,7 +493,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -510,7 +510,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -527,7 +527,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -550,12 +550,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -586,7 +592,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -804,7 +817,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1329,7 +1342,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1337,7 +1350,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1359,7 +1372,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1376,7 +1389,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1547,7 +1560,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1564,7 +1577,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1592,7 +1605,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1630,7 +1643,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -1807,7 +1820,7 @@ namespace ReactiveUI.Binding.Reactive.Mixins namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -1820,7 +1833,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -1883,7 +1896,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -1925,21 +1938,21 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -1951,28 +1964,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net48/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net48/PublicAPI.txt index 754ac36f..9fc9849e 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net48/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net48/PublicAPI.txt @@ -41,7 +41,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -67,7 +67,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -83,7 +83,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -97,7 +97,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -125,7 +125,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -157,7 +157,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -178,7 +178,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -200,7 +200,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -217,7 +217,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -233,7 +233,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -348,7 +348,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -365,7 +365,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -376,7 +376,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -407,7 +407,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -436,7 +436,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -453,7 +453,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -476,7 +476,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -493,7 +493,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -510,7 +510,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -527,7 +527,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -550,12 +550,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -586,7 +592,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -804,7 +817,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1329,7 +1342,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1337,7 +1350,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1359,7 +1372,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1376,7 +1389,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1547,7 +1560,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1564,7 +1577,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1592,7 +1605,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1630,7 +1643,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -1807,7 +1820,7 @@ namespace ReactiveUI.Binding.Reactive.Mixins namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -1820,7 +1833,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -1883,7 +1896,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -1925,21 +1938,21 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -1951,28 +1964,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net481/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net481/PublicAPI.txt index 754ac36f..9fc9849e 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net481/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net481/PublicAPI.txt @@ -41,7 +41,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -67,7 +67,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -83,7 +83,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -97,7 +97,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -125,7 +125,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -157,7 +157,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -178,7 +178,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -200,7 +200,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -217,7 +217,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -233,7 +233,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -348,7 +348,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -365,7 +365,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -376,7 +376,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -407,7 +407,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -436,7 +436,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -453,7 +453,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -476,7 +476,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -493,7 +493,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -510,7 +510,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -527,7 +527,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -550,12 +550,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -586,7 +592,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -804,7 +817,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1329,7 +1342,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1337,7 +1350,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1359,7 +1372,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1376,7 +1389,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1547,7 +1560,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1564,7 +1577,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1592,7 +1605,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1630,7 +1643,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -1807,7 +1820,7 @@ namespace ReactiveUI.Binding.Reactive.Mixins namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -1820,7 +1833,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -1883,7 +1896,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -1925,21 +1938,21 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -1951,28 +1964,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net8.0/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net8.0/PublicAPI.txt index ca511ca1..9c478606 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net8.0/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net8.0/PublicAPI.txt @@ -53,7 +53,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -79,7 +79,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -95,7 +95,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -109,7 +109,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -137,7 +137,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -175,7 +175,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -196,7 +196,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -219,7 +219,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -236,7 +236,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -252,7 +252,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -368,7 +368,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -385,7 +385,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -396,7 +396,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -404,7 +404,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -427,7 +427,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -462,7 +462,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -479,7 +479,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -502,7 +502,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -519,7 +519,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -536,7 +536,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -553,7 +553,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -582,12 +582,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -618,7 +624,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -836,7 +849,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1620,7 +1633,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1628,7 +1641,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1650,7 +1663,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1667,7 +1680,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1868,7 +1881,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1885,7 +1898,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1913,7 +1926,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1951,7 +1964,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2149,7 +2162,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2162,7 +2175,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2239,7 +2252,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2281,21 +2294,21 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2307,28 +2320,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Reactive/PublicAPI/net9.0/PublicAPI.txt b/src/ReactiveUI.Binding.Reactive/PublicAPI/net9.0/PublicAPI.txt index a9c26914..659ff437 100644 --- a/src/ReactiveUI.Binding.Reactive/PublicAPI/net9.0/PublicAPI.txt +++ b/src/ReactiveUI.Binding.Reactive/PublicAPI/net9.0/PublicAPI.txt @@ -53,7 +53,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -79,7 +79,7 @@ namespace ReactiveUI.Binding.Reactive public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.Reactive.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -95,7 +95,7 @@ namespace ReactiveUI.Binding.Reactive public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.Reactive.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -109,7 +109,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -137,7 +137,7 @@ namespace ReactiveUI.Binding.Reactive public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -175,7 +175,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -196,7 +196,7 @@ namespace ReactiveUI.Binding.Reactive { public static void RegisterDefaults(ReactiveUI.Binding.Reactive.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.Reactive.IViewLocator { public DefaultViewLocator() { } @@ -219,7 +219,7 @@ namespace ReactiveUI.Binding.Reactive [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -236,7 +236,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -252,7 +252,7 @@ namespace ReactiveUI.Binding.Reactive public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -368,7 +368,7 @@ namespace ReactiveUI.Binding.Reactive bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -385,7 +385,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.Reactive.IInteraction { public Interaction() { } @@ -396,7 +396,7 @@ namespace ReactiveUI.Binding.Reactive public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.Reactive.IOutputContext { public TInput Input { get; } @@ -404,7 +404,7 @@ namespace ReactiveUI.Binding.Reactive public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -427,7 +427,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -462,7 +462,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -479,7 +479,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -502,7 +502,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -519,7 +519,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -536,7 +536,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -553,7 +553,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -582,12 +582,18 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.Reactive.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -618,7 +624,14 @@ namespace ReactiveUI.Binding.Reactive public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.Reactive.ObservableAsPropertyHelper Default(T? initialValue, System.Reactive.Concurrency.IScheduler? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.Reactive.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -836,7 +849,7 @@ namespace ReactiveUI.Binding.Reactive public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.Reactive.IReactiveBinding where TView : ReactiveUI.Binding.Reactive.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.Reactive.BindingDirection direction, System.IDisposable subscription) { } @@ -1627,7 +1640,7 @@ namespace ReactiveUI.Binding.Reactive [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1635,7 +1648,7 @@ namespace ReactiveUI.Binding.Reactive public void Register(ReactiveUI.Binding.Reactive.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.Reactive.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1657,7 +1670,7 @@ namespace ReactiveUI.Binding.Reactive { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1674,7 +1687,7 @@ namespace ReactiveUI.Binding.Reactive public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.Reactive.IBindingTypeConverter { public StringConverter() { } @@ -1875,7 +1888,7 @@ namespace ReactiveUI.Binding.Reactive ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1892,7 +1905,7 @@ namespace ReactiveUI.Binding.Reactive public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1920,7 +1933,7 @@ namespace ReactiveUI.Binding.Reactive public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1958,7 +1971,7 @@ namespace ReactiveUI.Binding.Reactive.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Reactive.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2156,7 +2169,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2169,7 +2182,7 @@ namespace ReactiveUI.Binding.Reactive.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2246,7 +2259,7 @@ namespace ReactiveUI.Binding.Reactive.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2288,21 +2301,21 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2314,28 +2327,28 @@ namespace ReactiveUI.Binding.Reactive.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.Reactive.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding.Shared/Bindings/BindingTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/BindingTypeConverter.cs index c7a5b6fd..d5724f9d 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/BindingTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/BindingTypeConverter.cs @@ -14,7 +14,7 @@ namespace ReactiveUI.Binding; /// /// The source type to convert from. /// The target type to convert to. -[DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] +[DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : IBindingTypeConverter { /// diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/ByteToNullableByteTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/ByteToNullableByteTypeConverter.cs index 0938807a..390b499a 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/ByteToNullableByteTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/ByteToNullableByteTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a to a nullable ; the conversion always succeeds. -[DebuggerDisplay("byte -> byte? (affinity {Affinity})")] +[DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/DecimalToNullableDecimalTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/DecimalToNullableDecimalTypeConverter.cs index 1ee1dc33..f751fb8f 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/DecimalToNullableDecimalTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/DecimalToNullableDecimalTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a to a nullable ; the conversion always succeeds. -[DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] +[DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/DoubleToNullableDoubleTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/DoubleToNullableDoubleTypeConverter.cs index de5adf75..2f3b94e5 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/DoubleToNullableDoubleTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/DoubleToNullableDoubleTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a to a nullable ; the conversion always succeeds. -[DebuggerDisplay("double -> double? (affinity {Affinity})")] +[DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/EqualityTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/EqualityTypeConverter.cs index 6c5b188b..7066786a 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/EqualityTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/EqualityTypeConverter.cs @@ -15,7 +15,7 @@ namespace ReactiveUI.Binding; /// The conversion always succeeds, and two nulls are equal. The converter is registered for the /// (, ) pair, so a registry lookup finds it only for that pair. /// -[DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] +[DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : IBindingTypeConverter { /// diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/IntegerToNullableIntegerTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/IntegerToNullableIntegerTypeConverter.cs index c1d9482d..05d1b069 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/IntegerToNullableIntegerTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/IntegerToNullableIntegerTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts an to a nullable ; the conversion always succeeds. -[DebuggerDisplay("int -> int? (affinity {Affinity})")] +[DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/LongToNullableLongTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/LongToNullableLongTypeConverter.cs index 0432856d..b8056244 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/LongToNullableLongTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/LongToNullableLongTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a to a nullable ; the conversion always succeeds. -[DebuggerDisplay("long -> long? (affinity {Affinity})")] +[DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableByteToByteTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableByteToByteTypeConverter.cs index a9916d8d..0cf0947e 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableByteToByteTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableByteToByteTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a nullable to a ; a null value fails the conversion. -[DebuggerDisplay("byte? -> byte (affinity {Affinity})")] +[DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableDecimalToDecimalTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableDecimalToDecimalTypeConverter.cs index 20053804..64a4e40e 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableDecimalToDecimalTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableDecimalToDecimalTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a nullable to a ; a null value fails the conversion. -[DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] +[DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableDoubleToDoubleTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableDoubleToDoubleTypeConverter.cs index b5cc4596..b4cf170c 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableDoubleToDoubleTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableDoubleToDoubleTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a nullable to a ; a null value fails the conversion. -[DebuggerDisplay("double? -> double (affinity {Affinity})")] +[DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableIntegerToIntegerTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableIntegerToIntegerTypeConverter.cs index 1c61c8f8..ba645d84 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableIntegerToIntegerTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableIntegerToIntegerTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a nullable to an ; a null value fails the conversion. -[DebuggerDisplay("int? -> int (affinity {Affinity})")] +[DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableLongToLongTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableLongToLongTypeConverter.cs index 0743a99a..7d4ee96b 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableLongToLongTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableLongToLongTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a nullable to a ; a null value fails the conversion. -[DebuggerDisplay("long? -> long (affinity {Affinity})")] +[DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableShortToShortTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableShortToShortTypeConverter.cs index 59585443..afc1238a 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableShortToShortTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableShortToShortTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a nullable to a ; a null value fails the conversion. -[DebuggerDisplay("short? -> short (affinity {Affinity})")] +[DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableSingleToSingleTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableSingleToSingleTypeConverter.cs index 0ed2fb53..524016ac 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableSingleToSingleTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/NullableSingleToSingleTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a nullable to a ; a null value fails the conversion. -[DebuggerDisplay("float? -> float (affinity {Affinity})")] +[DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/ShortToNullableShortTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/ShortToNullableShortTypeConverter.cs index 95dc5e00..e156d1e6 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/ShortToNullableShortTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/ShortToNullableShortTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a to a nullable ; the conversion always succeeds. -[DebuggerDisplay("short -> short? (affinity {Affinity})")] +[DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/SingleToNullableSingleTypeConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/SingleToNullableSingleTypeConverter.cs index 15f6229b..52503bb5 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/SingleToNullableSingleTypeConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/SingleToNullableSingleTypeConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Converts a to a nullable ; the conversion always succeeds. -[DebuggerDisplay("float -> float? (affinity {Affinity})")] +[DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converter/StringConverter.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converter/StringConverter.cs index a2d3d837..d73beab2 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converter/StringConverter.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converter/StringConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Passes a through unchanged; a null or non-string value fails the conversion. -[DebuggerDisplay("string -> string identity (affinity {Affinity})")] +[DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : IBindingTypeConverter { /// The affinity returned by indicating a strong match. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converters/BindingFallbackConverterRegistry.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converters/BindingFallbackConverterRegistry.cs index 3fee1715..b62a8381 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converters/BindingFallbackConverterRegistry.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converters/BindingFallbackConverterRegistry.cs @@ -13,7 +13,7 @@ namespace ReactiveUI.Binding; /// Reads are lock-free against an immutable snapshot; each registration is serialized under a lock and publishes a /// new snapshot. /// -[DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] +[DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { /// Synchronization gate for serializing write operations. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converters/BindingTypeConverterRegistry.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converters/BindingTypeConverterRegistry.cs index 4f0c37c4..3564974f 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converters/BindingTypeConverterRegistry.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converters/BindingTypeConverterRegistry.cs @@ -13,7 +13,7 @@ namespace ReactiveUI.Binding; /// Reads are lock-free against an immutable snapshot; each registration is serialized under a lock and publishes a /// new snapshot, so registering is expensive and lookups are cheap. /// -[DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] +[DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { /// Synchronization gate for serializing write operations. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converters/ConverterService.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converters/ConverterService.cs index 12a4e2d0..d8bec090 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converters/ConverterService.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converters/ConverterService.cs @@ -14,7 +14,7 @@ namespace ReactiveUI.Binding; /// /// A new service holds no converters; adds the built-in ones. /// -[DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] +[DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { /// Initializes a new instance of the class. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/Converters/SetMethodBindingConverterRegistry.cs b/src/ReactiveUI.Binding.Shared/Bindings/Converters/SetMethodBindingConverterRegistry.cs index e1ab0806..5c8117c6 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/Converters/SetMethodBindingConverterRegistry.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/Converters/SetMethodBindingConverterRegistry.cs @@ -13,7 +13,7 @@ namespace ReactiveUI.Binding; /// Reads are lock-free against an immutable snapshot; each registration is serialized under a lock and publishes a /// new snapshot. /// -[DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] +[DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { /// Synchronization gate for serializing write operations. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/ObservableAsPropertyAttribute.cs b/src/ReactiveUI.Binding.Shared/Bindings/ObservableAsPropertyAttribute.cs index 424b4282..000ed071 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/ObservableAsPropertyAttribute.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/ObservableAsPropertyAttribute.cs @@ -14,8 +14,15 @@ namespace ReactiveUI.Binding; /// ToProperty. /// /// +/// /// The property has to be declared by you, as a partial property, so every generator in the build can see it. A /// property only another generator writes is invisible to this one, so it could not be observed or bound. +/// +/// +/// The attribute is also accepted on a field, a method or an observable property, the forms ReactiveUI's older source +/// generator supported. Nothing is generated for those. An analyzer reports each one and offers a code fix that +/// rewrites it as a partial property. and exist for that rewrite. +/// /// /// /// @@ -33,5 +40,36 @@ namespace ReactiveUI.Binding; /// ]]> /// /// -[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)] -public sealed class ObservableAsPropertyAttribute : Attribute; +[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Method, AllowMultiple = false, Inherited = false)] +[DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] +public sealed class ObservableAsPropertyAttribute : Attribute +{ + /// + /// Gets or sets the name of the property the code fix writes for a method or an observable property. When it is + /// null, the name is the member's name followed by Property. A partial property keeps its own name. + /// + public string? PropertyName { get; set; } + + /// + /// Gets or sets a value indicating whether the helper field is , so it can only be + /// assigned in a constructor. The default is . + /// + public bool ReadOnly { get; set; } + + /// Gets or sets a value indicating whether the helper field is rather than . + public bool UseProtected { get; set; } + + /// + /// Gets or sets the value the property returns until its helper is assigned, as a C# expression such as + /// "1.5d". For a property the text is the value itself, not an expression. When it is + /// null, a non-nullable property returns and any other property + /// returns its type's default. + /// + public string? InitialValue { get; set; } + + /// + /// Gets or sets the modifier the code fix gives the property it writes for a field. A partial property carries its + /// own modifiers. + /// + public ObservableAsPropertyInheritance Inheritance { get; set; } +} diff --git a/src/ReactiveUI.Binding.Shared/Bindings/ObservableAsPropertyHelper.cs b/src/ReactiveUI.Binding.Shared/Bindings/ObservableAsPropertyHelper.cs index 02a3cc49..59b925b3 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/ObservableAsPropertyHelper.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/ObservableAsPropertyHelper.cs @@ -38,7 +38,7 @@ namespace ReactiveUI.Binding; /// ]]> /// /// -[DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] +[DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : IDisposable { /// The state and source subscription behind this helper. diff --git a/src/ReactiveUI.Binding.Shared/Bindings/ObservableAsPropertyInheritance.cs b/src/ReactiveUI.Binding.Shared/Bindings/ObservableAsPropertyInheritance.cs new file mode 100644 index 00000000..8cc1bcf8 --- /dev/null +++ b/src/ReactiveUI.Binding.Shared/Bindings/ObservableAsPropertyInheritance.cs @@ -0,0 +1,25 @@ +// Copyright (c) 2019-2026 ReactiveUI and Contributors. All rights reserved. +// ReactiveUI and Contributors licenses this file to you under the MIT license. +// See the LICENSE file in the project root for full license information. + +#if REACTIVE_SHIM +namespace ReactiveUI.Binding.Reactive; +#else +namespace ReactiveUI.Binding; +#endif + +/// The modifier the code fix gives the property it writes for a field. +public enum ObservableAsPropertyInheritance +{ + /// No modifier. + None = 0, + + /// The property is . + Virtual = 1, + + /// The property is an . + Override = 2, + + /// The property hides an inherited member with . + New = 3, +} diff --git a/src/ReactiveUI.Binding.Shared/Bindings/ReactiveBinding.cs b/src/ReactiveUI.Binding.Shared/Bindings/ReactiveBinding.cs index 78fadbf0..1929bf48 100644 --- a/src/ReactiveUI.Binding.Shared/Bindings/ReactiveBinding.cs +++ b/src/ReactiveUI.Binding.Shared/Bindings/ReactiveBinding.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; /// Default implementation of used by generated view-first bindings. /// The type of the view. /// The type of the bound value. -[DebuggerDisplay("{Direction} binding on {View}")] +[DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : IReactiveBinding where TView : IViewFor { diff --git a/src/ReactiveUI.Binding.Shared/Builder/ReactiveUIBindingBuilder.cs b/src/ReactiveUI.Binding.Shared/Builder/ReactiveUIBindingBuilder.cs index ec7631df..325fb07a 100644 --- a/src/ReactiveUI.Binding.Shared/Builder/ReactiveUIBindingBuilder.cs +++ b/src/ReactiveUI.Binding.Shared/Builder/ReactiveUIBindingBuilder.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Builder; #endif /// Configures ReactiveUI.Binding services, converters and platform modules on a Splat . -[DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] +[DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : AppBuilder, IReactiveUIBindingBuilder, IReactiveUIBindingInstance { /// Tracks whether core services are registered, so a repeat call registers nothing. diff --git a/src/ReactiveUI.Binding.Shared/Fallback/ObservationAffinityChecker.cs b/src/ReactiveUI.Binding.Shared/Fallback/ObservationAffinityChecker.cs index 814deeb1..8832ab64 100644 --- a/src/ReactiveUI.Binding.Shared/Fallback/ObservationAffinityChecker.cs +++ b/src/ReactiveUI.Binding.Shared/Fallback/ObservationAffinityChecker.cs @@ -65,13 +65,13 @@ public static bool HasHigherAffinityPlugin(Type type, string propertyName, int g /// The type being observed. /// The property being observed. /// Whether notification occurs before the change. - [DebuggerDisplay("{Type.Name,nq}.{PropertyName,nq}, BeforeChanged = {BeforeChanged}")] + [DebuggerDisplay("ObservationKey: {Type.Name,nq}.{PropertyName,nq}, BeforeChanged = {BeforeChanged}")] private readonly record struct ObservationKey(Type Type, string PropertyName, bool BeforeChanged); /// Keeps the strongest custom vote independently of any generated mechanism's affinity. /// The winning registration, or null when no registration wins. /// The registration's property-specific score. - [DebuggerDisplay("Affinity = {Affinity}")] + [DebuggerDisplay("PluginSelection: Affinity = {Affinity}")] private readonly record struct PluginSelection(ICreatesObservableForProperty? Plugin, int Affinity); /// Owns registrations and scored votes so refresh cannot receive a stale publication. diff --git a/src/ReactiveUI.Binding.Shared/Interactions/Interaction.cs b/src/ReactiveUI.Binding.Shared/Interactions/Interaction.cs index 88d2244f..9ca417cd 100644 --- a/src/ReactiveUI.Binding.Shared/Interactions/Interaction.cs +++ b/src/ReactiveUI.Binding.Shared/Interactions/Interaction.cs @@ -29,7 +29,7 @@ namespace ReactiveUI.Binding; /// if no handler handles the interaction. /// /// -[DebuggerDisplay("Handlers = {_handlers.Length}")] +[DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : IInteraction { /// diff --git a/src/ReactiveUI.Binding.Shared/Interactions/InteractionContext.cs b/src/ReactiveUI.Binding.Shared/Interactions/InteractionContext.cs index 7b8b286f..3eda004f 100644 --- a/src/ReactiveUI.Binding.Shared/Interactions/InteractionContext.cs +++ b/src/ReactiveUI.Binding.Shared/Interactions/InteractionContext.cs @@ -23,7 +23,7 @@ namespace ReactiveUI.Binding; /// to guard logic that should only execute once. /// /// -[DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] +[DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : IOutputContext { /// The output value set by a handler via . diff --git a/src/ReactiveUI.Binding.Shared/Interactions/UnhandledInteractionException.cs b/src/ReactiveUI.Binding.Shared/Interactions/UnhandledInteractionException.cs index cf9fb95e..7bd8f23c 100644 --- a/src/ReactiveUI.Binding.Shared/Interactions/UnhandledInteractionException.cs +++ b/src/ReactiveUI.Binding.Shared/Interactions/UnhandledInteractionException.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; /// Indicates that an interaction has gone unhandled. /// The type of the interaction's input. /// The type of the interaction's output. -[DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] +[DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : Exception { /// Initializes a new instance of the class for an interaction no handler handled. diff --git a/src/ReactiveUI.Binding.Shared/Interfaces/ObservedChange.cs b/src/ReactiveUI.Binding.Shared/Interfaces/ObservedChange.cs index e248dee1..112b2116 100644 --- a/src/ReactiveUI.Binding.Shared/Interfaces/ObservedChange.cs +++ b/src/ReactiveUI.Binding.Shared/Interfaces/ObservedChange.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; /// Concrete implementation of . /// The type of the object that raised the change. /// The type of the property value. -[DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] +[DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : IObservedChange { /// Initializes a new instance of the class. diff --git a/src/ReactiveUI.Binding.Shared/ObservableForProperty/ExpressionChainParameters.cs b/src/ReactiveUI.Binding.Shared/ObservableForProperty/ExpressionChainParameters.cs index 0d0eb79b..5049f5b8 100644 --- a/src/ReactiveUI.Binding.Shared/ObservableForProperty/ExpressionChainParameters.cs +++ b/src/ReactiveUI.Binding.Shared/ObservableForProperty/ExpressionChainParameters.cs @@ -20,7 +20,7 @@ namespace ReactiveUI.Binding; /// Whether the first value the chain produces is dropped. /// Whether consecutive equal leaf values are suppressed. /// Whether the warning a property with no notification mechanism raises is suppressed. -[DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] +[DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] [EditorBrowsable(EditorBrowsableState.Never)] public readonly record struct ExpressionChainParameters( TSender? Source, diff --git a/src/ReactiveUI.Binding.Shared/ObservableForProperty/ExpressionChainSink.cs b/src/ReactiveUI.Binding.Shared/ObservableForProperty/ExpressionChainSink.cs index 7be1a770..73d56847 100644 --- a/src/ReactiveUI.Binding.Shared/ObservableForProperty/ExpressionChainSink.cs +++ b/src/ReactiveUI.Binding.Shared/ObservableForProperty/ExpressionChainSink.cs @@ -24,7 +24,7 @@ namespace ReactiveUI.Binding.ObservableForProperty; /// faults the observer with an . The sequence never completes; observed values /// carry the root object as their sender. /// -[DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] +[DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] [EditorBrowsable(EditorBrowsableState.Never)] [RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] public sealed class ExpressionChainSink : IObservable> diff --git a/src/ReactiveUI.Binding.Shared/ObservableForProperty/ObservableForPropertySink.cs b/src/ReactiveUI.Binding.Shared/ObservableForProperty/ObservableForPropertySink.cs index dd99e2cb..ef93e0e2 100644 --- a/src/ReactiveUI.Binding.Shared/ObservableForProperty/ObservableForPropertySink.cs +++ b/src/ReactiveUI.Binding.Shared/ObservableForProperty/ObservableForPropertySink.cs @@ -19,7 +19,7 @@ namespace ReactiveUI.Binding.ObservableForProperty; /// ignored. A read that throws is forwarded to the observer as an error. Errors and completion of the /// notification source pass through to the observer. /// -[DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] +[DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] [EditorBrowsable(EditorBrowsableState.Never)] public sealed class ObservableForPropertySink : IObservable> { diff --git a/src/ReactiveUI.Binding.Shared/Observables/CallbackPropertyObservable.cs b/src/ReactiveUI.Binding.Shared/Observables/CallbackPropertyObservable.cs index d342b24c..4dcfcb83 100644 --- a/src/ReactiveUI.Binding.Shared/Observables/CallbackPropertyObservable.cs +++ b/src/ReactiveUI.Binding.Shared/Observables/CallbackPropertyObservable.cs @@ -22,7 +22,7 @@ namespace ReactiveUI.Binding.Observables; /// subscribe. The sequence never completes. Disposing a subscription detaches it once, however many times it /// is disposed. /// -[DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] +[DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] [EditorBrowsable(EditorBrowsableState.Never)] public sealed class CallbackPropertyObservable : IObservable { diff --git a/src/ReactiveUI.Binding.Shared/Observables/DeferredPropertyObservable.cs b/src/ReactiveUI.Binding.Shared/Observables/DeferredPropertyObservable.cs index 6655ea14..a53ddca8 100644 --- a/src/ReactiveUI.Binding.Shared/Observables/DeferredPropertyObservable.cs +++ b/src/ReactiveUI.Binding.Shared/Observables/DeferredPropertyObservable.cs @@ -21,7 +21,7 @@ namespace ReactiveUI.Binding.Observables; /// subscription reads the property afresh. The sequence never completes, so a binding or chain that observes it /// stays subscribed. /// -[DebuggerDisplay("DeferredProperty: {_source}")] +[DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] [EditorBrowsable(EditorBrowsableState.Never)] public sealed class DeferredPropertyObservable : IObservable { diff --git a/src/ReactiveUI.Binding.Shared/Observables/EventObservable.cs b/src/ReactiveUI.Binding.Shared/Observables/EventObservable.cs index b14c6ec1..c5f1c7bc 100644 --- a/src/ReactiveUI.Binding.Shared/Observables/EventObservable.cs +++ b/src/ReactiveUI.Binding.Shared/Observables/EventObservable.cs @@ -19,7 +19,7 @@ namespace ReactiveUI.Binding.Observables; /// detached, and one that throws while the event is raised propagates to whoever raised it. The sequence never /// completes. /// -[DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] +[DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] [EditorBrowsable(EditorBrowsableState.Never)] public sealed class EventObservable : IObservable { diff --git a/src/ReactiveUI.Binding.Shared/Observables/NotifyPropertyChangedObservable.cs b/src/ReactiveUI.Binding.Shared/Observables/NotifyPropertyChangedObservable.cs index c00dc423..c7b30e9f 100644 --- a/src/ReactiveUI.Binding.Shared/Observables/NotifyPropertyChangedObservable.cs +++ b/src/ReactiveUI.Binding.Shared/Observables/NotifyPropertyChangedObservable.cs @@ -18,7 +18,7 @@ namespace ReactiveUI.Binding.Observables; /// every property. Nothing is emitted on subscribe, and the emitted change carries no value: the sender and /// expression identify the property to read. The sequence never completes. /// -[DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] +[DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] [EditorBrowsable(EditorBrowsableState.Never)] public sealed class NotifyPropertyChangedObservable : IObservable> { diff --git a/src/ReactiveUI.Binding.Shared/Observables/PluginPropertyObservable.cs b/src/ReactiveUI.Binding.Shared/Observables/PluginPropertyObservable.cs index 4ec33c20..e5765bf9 100644 --- a/src/ReactiveUI.Binding.Shared/Observables/PluginPropertyObservable.cs +++ b/src/ReactiveUI.Binding.Shared/Observables/PluginPropertyObservable.cs @@ -20,7 +20,7 @@ namespace ReactiveUI.Binding.Observables; /// notification. The current value is emitted on subscribe and again after each notification. An error or /// completion from the plugin is passed on after any value still waiting to be read. /// -[DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] +[DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] [EditorBrowsable(EditorBrowsableState.Never)] public sealed class PluginPropertyObservable : IObservable { diff --git a/src/ReactiveUI.Binding.Shared/Observables/PropertyChangingObservable.cs b/src/ReactiveUI.Binding.Shared/Observables/PropertyChangingObservable.cs index 6e0ca791..73636689 100644 --- a/src/ReactiveUI.Binding.Shared/Observables/PropertyChangingObservable.cs +++ b/src/ReactiveUI.Binding.Shared/Observables/PropertyChangingObservable.cs @@ -20,7 +20,7 @@ namespace ReactiveUI.Binding.Observables; /// to every property. Consecutive equal values are not filtered, because the value has not changed when the event /// fires. /// -[DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] +[DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] [EditorBrowsable(EditorBrowsableState.Never)] public sealed class PropertyChangingObservable : IObservable { diff --git a/src/ReactiveUI.Binding.Shared/Observables/PropertyObservable.cs b/src/ReactiveUI.Binding.Shared/Observables/PropertyObservable.cs index 04e437f6..491453f9 100644 --- a/src/ReactiveUI.Binding.Shared/Observables/PropertyObservable.cs +++ b/src/ReactiveUI.Binding.Shared/Observables/PropertyObservable.cs @@ -16,7 +16,7 @@ namespace ReactiveUI.Binding.Observables; /// A notification with a null or empty property name applies /// to every property. When distinct filtering is on, a value equal to the last emitted one is dropped. /// -[DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] +[DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] [EditorBrowsable(EditorBrowsableState.Never)] public sealed class PropertyObservable : IObservable { diff --git a/src/ReactiveUI.Binding.Shared/Observables/UnchangingPropertyObservable.cs b/src/ReactiveUI.Binding.Shared/Observables/UnchangingPropertyObservable.cs index 8edf0651..116eda32 100644 --- a/src/ReactiveUI.Binding.Shared/Observables/UnchangingPropertyObservable.cs +++ b/src/ReactiveUI.Binding.Shared/Observables/UnchangingPropertyObservable.cs @@ -15,7 +15,7 @@ namespace ReactiveUI.Binding.Observables; /// /// The sequence never completes, so a binding or chain that observes it stays subscribed. /// -[DebuggerDisplay("UnchangingProperty: {_value}")] +[DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] [EditorBrowsable(EditorBrowsableState.Never)] public sealed class UnchangingPropertyObservable : IObservable { diff --git a/src/ReactiveUI.Binding.Shared/Platforms/apple-common/KvoPropertyObservable.cs b/src/ReactiveUI.Binding.Shared/Platforms/apple-common/KvoPropertyObservable.cs index c107dc53..23590714 100644 --- a/src/ReactiveUI.Binding.Shared/Platforms/apple-common/KvoPropertyObservable.cs +++ b/src/ReactiveUI.Binding.Shared/Platforms/apple-common/KvoPropertyObservable.cs @@ -18,7 +18,7 @@ namespace ReactiveUI.Binding.Observables; /// Each subscription registers its own observer for the key path and delivers the current value straight away. The /// sequence never completes. Disposing a subscription removes the observer once, however many times it is disposed. /// -[DebuggerDisplay("KvoProperty: {_keyPath}")] +[DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] [EditorBrowsable(EditorBrowsableState.Never)] public sealed class KvoPropertyObservable : IObservable { diff --git a/src/ReactiveUI.Binding.Shared/View/DefaultViewLocator.cs b/src/ReactiveUI.Binding.Shared/View/DefaultViewLocator.cs index 29b84240..e94668aa 100644 --- a/src/ReactiveUI.Binding.Shared/View/DefaultViewLocator.cs +++ b/src/ReactiveUI.Binding.Shared/View/DefaultViewLocator.cs @@ -17,7 +17,7 @@ namespace ReactiveUI.Binding; /// using a three-tier resolution strategy: source-generated AOT-safe dispatch, explicit runtime /// mappings, and service locator fallback. /// -[DebuggerDisplay("Mappings = {_mappings.Count}")] +[DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : IViewLocator { /// diff --git a/src/ReactiveUI.Binding.Shared/View/ViewContractAttribute.cs b/src/ReactiveUI.Binding.Shared/View/ViewContractAttribute.cs index fd380ab9..937086f4 100644 --- a/src/ReactiveUI.Binding.Shared/View/ViewContractAttribute.cs +++ b/src/ReactiveUI.Binding.Shared/View/ViewContractAttribute.cs @@ -13,7 +13,7 @@ namespace ReactiveUI.Binding; /// so one view model can have a different view per contract. /// /// The contract value for view resolution. -[DebuggerDisplay("Contract = {Contract}")] +[DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] [AttributeUsage(AttributeTargets.Class)] public sealed class ViewContractAttribute(string contract) : Attribute { diff --git a/src/ReactiveUI.Binding.Shared/View/ViewMappingBuilder.cs b/src/ReactiveUI.Binding.Shared/View/ViewMappingBuilder.cs index 3fad7ac6..71c52ab5 100644 --- a/src/ReactiveUI.Binding.Shared/View/ViewMappingBuilder.cs +++ b/src/ReactiveUI.Binding.Shared/View/ViewMappingBuilder.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding; #endif /// Fluent builder for registering view-to-view-model mappings on a . -[DebuggerDisplay("Locator = {_locator}")] +[DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { /// The view locator to register mappings on. diff --git a/src/ReactiveUI.Binding.SourceGenerators/AnalyzerReleases.Unshipped.md b/src/ReactiveUI.Binding.SourceGenerators/AnalyzerReleases.Unshipped.md index 1c41b0d6..1d2dd80f 100644 --- a/src/ReactiveUI.Binding.SourceGenerators/AnalyzerReleases.Unshipped.md +++ b/src/ReactiveUI.Binding.SourceGenerators/AnalyzerReleases.Unshipped.md @@ -19,3 +19,5 @@ RXUIBIND015 | Usage | Warning | Binding call names a type generated code cannot reach RXUIBIND016 | Usage | Warning | Binding call is made through a type parameter RXUIBIND017 | Usage | Warning | Binding writes to a UI object without its platform package + RXUIBIND018 | Usage | Warning | ObservableAsProperty needs a partial get-only property + RXUIBIND019 | Usage | Warning | ObservableAsProperty method takes parameters diff --git a/src/ReactiveUI.Binding.SourceGenerators/Constants.cs b/src/ReactiveUI.Binding.SourceGenerators/Constants.cs index 4b67aba9..30cb5dce 100644 --- a/src/ReactiveUI.Binding.SourceGenerators/Constants.cs +++ b/src/ReactiveUI.Binding.SourceGenerators/Constants.cs @@ -163,6 +163,21 @@ internal static class Constants /// Metadata name for the open generic IViewFor<T> interface used for view resolution. internal const string IViewForGenericMetadataName = "ReactiveUI.Binding.IViewFor`1"; + /// Metadata name for the System.Reactive flavour's open generic IViewFor<T> interface. + internal const string ReactiveIViewForGenericMetadataName = "ReactiveUI.Binding.Reactive.IViewFor`1"; + + /// The namespace the lean runtime declares its view types in, with the trailing dot. + internal const string LeanViewNamespacePrefix = "ReactiveUI.Binding."; + + /// The namespace the System.Reactive runtime declares its view types in, with the trailing dot. + internal const string ReactiveViewNamespacePrefix = "ReactiveUI.Binding.Reactive."; + + /// Metadata name of ReactiveUI.SourceGenerators' generic [IViewFor<T>] attribute. + internal const string SourceGeneratorsGenericIViewForAttributeMetadataName = "ReactiveUI.SourceGenerators.IViewForAttribute`1"; + + /// Metadata name of ReactiveUI.SourceGenerators' [IViewFor("...")] attribute. + internal const string SourceGeneratorsIViewForAttributeMetadataName = "ReactiveUI.SourceGenerators.IViewForAttribute"; + /// Metadata name for the ExcludeFromViewRegistrationAttribute used to skip view auto-registration. internal const string ExcludeFromViewRegistrationAttributeMetadataName = "ReactiveUI.Binding.ExcludeFromViewRegistrationAttribute"; diff --git a/src/ReactiveUI.Binding.SourceGenerators/DiagnosticWarnings.cs b/src/ReactiveUI.Binding.SourceGenerators/DiagnosticWarnings.cs index 129ca4bb..6db89f09 100644 --- a/src/ReactiveUI.Binding.SourceGenerators/DiagnosticWarnings.cs +++ b/src/ReactiveUI.Binding.SourceGenerators/DiagnosticWarnings.cs @@ -119,6 +119,26 @@ internal static class DiagnosticWarnings true, MissingViewThreadInvokerDescription); + /// RXUIBIND018: [ObservableAsProperty] marks something other than a partial get-only instance property. + internal static readonly DiagnosticDescriptor ObservableAsPropertyNeedsPartialProperty = new( + "RXUIBIND018", + "ObservableAsProperty needs a partial get-only property", + "'{0}' is not a partial get-only instance property, so nothing is generated for it; declare the property as 'partial T {0} {{ get; }}'", + UsageCategory, + DiagnosticSeverity.Warning, + true, + ObservableAsPropertyNeedsPartialPropertyDescription); + + /// RXUIBIND019: a method marked [ObservableAsProperty] takes parameters. + internal static readonly DiagnosticDescriptor ObservableAsPropertyMethodHasParameters = new( + "RXUIBIND019", + "ObservableAsProperty method takes parameters", + "'{0}' takes parameters, so it cannot supply a property's values; remove the parameters or the attribute", + UsageCategory, + DiagnosticSeverity.Warning, + true, + ObservableAsPropertyMethodHasParametersDescription); + /// RXUIBIND003: Expression contains private/protected member. internal static readonly DiagnosticDescriptor PrivateMember = new( "RXUIBIND003", @@ -262,6 +282,18 @@ internal static class DiagnosticWarnings + "RaisePropertyChanged or OnPropertyChanged method; or declare the type, and every type it is nested in, " + "as partial, so the generator can add a member that raises the type's own event."; + /// The string description of the ObservableAsProperty target warning. + private const string ObservableAsPropertyNeedsPartialPropertyDescription = + "The generator writes the body of a partial get-only instance property that you declare, so every generator in " + + "the build can see the property. A field, a method or an observable property marked with the attribute, as " + + "ReactiveUI's older source generator allowed, gets nothing. The code fix rewrites those as partial properties, " + + "which needs C# 13."; + + /// The string description of the ObservableAsProperty method parameters warning. + private const string ObservableAsPropertyMethodHasParametersDescription = + "A method marked [ObservableAsProperty] supplies the observable a property is built from, so it is called with " + + "no arguments."; + /// The string description of the unnamed ToProperty initial value error. private const string UnnamedToPropertyInitialValueDescription = "The selector overloads of ToProperty take optional caller-information string parameters. For a string property, " diff --git a/src/ReactiveUI.Binding.SourceGenerators/Generators/ObservableAsPropertyGenerator.cs b/src/ReactiveUI.Binding.SourceGenerators/Generators/ObservableAsPropertyGenerator.cs index 46a5ed55..61aad02b 100644 --- a/src/ReactiveUI.Binding.SourceGenerators/Generators/ObservableAsPropertyGenerator.cs +++ b/src/ReactiveUI.Binding.SourceGenerators/Generators/ObservableAsPropertyGenerator.cs @@ -8,6 +8,7 @@ using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using ReactiveUI.Binding.SourceGenerators.CodeGeneration; +using ReactiveUI.Binding.SourceGenerators.Helpers; using ReactiveUI.Binding.SourceGenerators.Models; using ReactiveUI.Binding.SourceGenerators.Plugins.PropertyRaise; @@ -83,19 +84,82 @@ node is PropertyDeclarationSyntax /// The model, or null when the property's type is not partial all the way out. internal static ObservableAsPropertyInfo? Extract(GeneratorAttributeSyntaxContext context, CancellationToken ct) { - if (context.TargetSymbol is not IPropertySymbol { ContainingType: { } type } property + // A static property has no instance to hold its helper; the analyzer reports it. + if (context.TargetSymbol is not IPropertySymbol { IsStatic: false, ContainingType: { } type } property || PartialTypeRaisePlugin.DescribeDeclaration(type) is not { } declaration) { return null; } + var options = ObservableAsPropertyOptions.Read(context.Attributes[0]); + var (initialValue, storesInitialValue) = InitialValueFor(property.Type, options.InitialValue); var syntax = (PropertyDeclarationSyntax)context.TargetNode; return new( declaration, HintNameFor(type), syntax.Modifiers.ToString(), property.Type.ToDisplayString(TypeFormat), - property.Name); + property.Name, + (options.UseProtected ? "protected" : "private") + (options.ReadOnly ? " readonly" : string.Empty), + initialValue, + storesInitialValue, + storesInitialValue ? UsingsOf(syntax) : new([])); + } + + /// Collects the directives an initial value expression was written against, in the order they appear. + /// The property declaration. + /// The extern alias directives, then the using directives of the file and its namespaces. + /// + /// The expression is copied into a generated file of its own, so it only binds the way it did in the consumer's file + /// when that file's directives come with it. Namespace-level directives are lifted to the top of the generated file. + /// + internal static EquatableArray UsingsOf(PropertyDeclarationSyntax property) + { + var directives = new List(); + var unit = (CompilationUnitSyntax)property.SyntaxTree.GetRoot(); + foreach (var alias in unit.Externs) + { + directives.Add(alias.ToString().Trim()); + } + + foreach (var directive in unit.Usings) + { + directives.Add(directive.ToString().Trim()); + } + + for (var node = property.Parent; node is not null; node = node.Parent) + { + if (node is BaseNamespaceDeclarationSyntax scope) + { + foreach (var directive in scope.Usings) + { + directives.Add(directive.ToString().Trim()); + } + } + } + + return new([.. directives]); + } + + /// Works out what a property returns before its helper is assigned. + /// The property type. + /// The attribute's InitialValue, or null. + /// + /// The expression, or null for the type's default, and whether it is held in a backing field. A string property's + /// text is its value, so it is written as a literal. Any other type's text is an expression, evaluated once. + /// + internal static (string? Expression, bool Stores) InitialValueFor(ITypeSymbol type, string? initialValue) + { + var isString = type.SpecialType == SpecialType.System_String; + if (initialValue is not null) + { + return isString ? (SymbolDisplay.FormatLiteral(initialValue, true), false) : (initialValue, true); + } + + // A non-nullable string never reports null, so it starts empty. + return isString && type.NullableAnnotation != NullableAnnotation.Annotated + ? ("global::System.String.Empty", false) + : (null, false); } /// Writes one file per type, holding every marked property the type declares. @@ -159,6 +223,11 @@ private static string Generate(List properties, in Lan .FileHeader(features.EmitGeneratedCodeMarkers, enableNullable: true) .BlankLine(); + if (AppendUsings(sb, properties)) + { + _ = sb.BlankLine(); + } + CodeGeneratorHelpers.OpenPartialDeclaration(sb, declaration); for (var i = 0; i < properties.Count; i++) { @@ -175,28 +244,62 @@ private static string Generate(List properties, in Lan return sb.ToStringAndReturn(); } + /// Writes each directive the type's initial values need, once. + /// The writer, at the top of the file. + /// The properties one type declares. + /// when any directive was written. + private static bool AppendUsings(SourceWriter sb, List properties) + { + HashSet? written = null; + for (var i = 0; i < properties.Count; i++) + { + var usings = properties[i].Usings; + for (var j = 0; j < usings.Length; j++) + { + written ??= [with(StringComparer.Ordinal)]; + if (written.Add(usings[j])) + { + _ = sb.Line(usings[j]); + } + } + } + + return written is not null; + } + /// Writes one property's helper field and the body that reads it. /// The writer, at the level of the type's members. /// The property. private static void AppendProperty(SourceWriter sb, ObservableAsPropertyInfo property) { var name = property.PropertyName; + if (property.StoresInitialValue) + { + _ = sb.Append("/// The value returns until its helper is assigned.") + .Append("private readonly ").Append(property.TypeFullName).Append(' '); + _ = AppendFieldName(sb, name).Append(" = ").Append(property.InitialValue!).EndStatement() + .BlankLine(); + } + _ = sb.Append("/// Backs ; assign it with ToProperty.") - .Append("private ").Append(HelperType).Append('<').Append(property.TypeFullName).Append(">? "); - _ = AppendHelperFieldName(sb, name).EndStatement() + .Append(property.HelperModifiers).Append(' ').Append(HelperType).Append('<').Append(property.TypeFullName).Append(">? "); + _ = AppendFieldName(sb, name).Append("Helper").EndStatement() .BlankLine() .Append(property.Modifiers).Append(' ').Append(property.TypeFullName).Append(' ').Append(name).Append(" => "); - _ = AppendHelperFieldName(sb, name).Append(" is null ? default! : "); - _ = AppendHelperFieldName(sb, name).Line(".Value;"); + _ = AppendFieldName(sb, name).Append("Helper is null ? "); + _ = property.StoresInitialValue + ? AppendFieldName(sb, name) + : sb.Append(property.InitialValue ?? "default!"); + _ = AppendFieldName(sb.Append(" : "), name).Line("Helper.Value;"); } - /// Appends the helper field for a property, _{name}Helper with the first letter lowered, without building a string for it. + /// Appends a field name for a property, _{name} with the first letter lowered, without building a string for it. /// The string builder to append to. /// The property name. /// The builder, for chaining. [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static SourceWriter AppendHelperFieldName(SourceWriter sb, string propertyName) => - sb.Append('_').Append(char.ToLowerInvariant(propertyName[0])).Append(propertyName, 1, propertyName.Length - 1).Append("Helper"); + private static SourceWriter AppendFieldName(SourceWriter sb, string propertyName) => + sb.Append('_').Append(char.ToLowerInvariant(propertyName[0])).Append(propertyName, 1, propertyName.Length - 1); /// Names a type's generated file from its metadata name, which is unique within the compilation. /// The type. diff --git a/src/ReactiveUI.Binding.SourceGenerators/Generators/ViewLocatorDispatchGenerator.cs b/src/ReactiveUI.Binding.SourceGenerators/Generators/ViewLocatorDispatchGenerator.cs index 1884e6eb..147d9b1e 100644 --- a/src/ReactiveUI.Binding.SourceGenerators/Generators/ViewLocatorDispatchGenerator.cs +++ b/src/ReactiveUI.Binding.SourceGenerators/Generators/ViewLocatorDispatchGenerator.cs @@ -6,6 +6,7 @@ using System.Runtime.CompilerServices; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; using ReactiveUI.Binding.SourceGenerators.CodeGeneration; using ReactiveUI.Binding.SourceGenerators.Helpers; using ReactiveUI.Binding.SourceGenerators.Models; @@ -50,12 +51,42 @@ internal static void Register( .Where(static x => x is not null) .Select(static (x, _) => x!); - // Collect and deduplicate - var collected = viewRegistrations.Collect(); - + // ReactiveUI.SourceGenerators adds IViewFor in output this generator cannot see, so its attribute is read too. + Func isClass = static (node, _) => node is ClassDeclarationSyntax; + Func fromAttribute = ViewRegistrationExtractor.ExtractFromIViewForAttribute; + var genericAttribute = context.SyntaxProvider + .ForAttributeWithMetadataName(Constants.SourceGeneratorsGenericIViewForAttributeMetadataName, isClass, fromAttribute) + .Collect(); + var namedAttribute = context.SyntaxProvider + .ForAttributeWithMetadataName(Constants.SourceGeneratorsIViewForAttributeMetadataName, isClass, fromAttribute) + .Collect(); + + // Views found through the interface come first, so deduplication keeps them over the attribute's. context.RegisterSourceOutput( - collected.Combine(languageFeatures), - static (ctx, data) => Generate(ctx, data.Left, data.Right)); + viewRegistrations.Collect().Combine(genericAttribute).Combine(namedAttribute).Combine(languageFeatures), + static (ctx, data) => Generate(ctx, Concatenate(data.Left.Left.Left, data.Left.Left.Right, data.Left.Right), data.Right)); + } + + /// Joins the registrations each pipeline found, interface registrations first. + /// The views found through IViewFor<T>. + /// The views found through [IViewFor<T>], with nulls for declined ones. + /// The views found through [IViewFor("...")], with nulls for declined ones. + /// Every registration, in that order. + internal static ImmutableArray Concatenate( + ImmutableArray fromInterfaces, + ImmutableArray fromGenericAttribute, + ImmutableArray fromNamedAttribute) + { + if (fromGenericAttribute.IsEmpty && fromNamedAttribute.IsEmpty) + { + return fromInterfaces; + } + + var all = ImmutableArray.CreateBuilder(fromInterfaces.Length + fromGenericAttribute.Length + fromNamedAttribute.Length); + all.AddRange(fromInterfaces); + AddFound(all, fromGenericAttribute); + AddFound(all, fromNamedAttribute); + return all.ToImmutable(); } /// Generates the ViewDispatch.g.cs source file from collected view registrations. @@ -125,6 +156,20 @@ internal static void GenerateSource(SourceWriter sb, List } } + /// Adds the registrations a pipeline found, skipping the ones it declined. + /// The registrations so far. + /// The pipeline's results, with nulls for declined ones. + private static void AddFound(ImmutableArray.Builder all, ImmutableArray found) + { + for (var i = 0; i < found.Length; i++) + { + if (found[i] is { } registration) + { + all.Add(registration); + } + } + } + /// Deduplicates view registrations by (view model fully qualified name, contract) pair. /// The raw registrations. /// A deduplicated list of registrations. @@ -442,7 +487,8 @@ private static void EmitResolverFallback(SourceWriter sb, ViewRegistrationInfo r if (!reg.IsSingleInstance) { _ = sb.BeginComment().Append("Fallback: direct construction (").Append(reg.ViewFullyQualifiedName).Line(" has a parameterless constructor).") - .BeginReturn().Append("new ").Append(reg.ViewFullyQualifiedName).Line("();"); + .BeginReturn(); + _ = AppendViewResult(sb, reg, $"new {reg.ViewFullyQualifiedName}()").EndStatement(); return; } @@ -457,6 +503,22 @@ private static void EmitResolverFallback(SourceWriter sb, ViewRegistrationInfo r .Outdent() .CloseBlock() .BlankLine() - .Return(fieldName); + .BeginReturn(); + _ = AppendViewResult(sb, reg, fieldName).EndStatement(); } + + /// Writes a constructed or cached view as the resolver's result. + /// The writer, after return . + /// The view registration. + /// The expression holding the view. + /// The writer, for chaining. + /// + /// A view found through [IViewFor] may not implement IViewFor: ReactiveUI.SourceGenerators only adds + /// the interface to a class deriving from a UI type it supports. Casting through keeps the + /// resolver compiling either way, and a view without the interface resolves to null. + /// + private static SourceWriter AppendViewResult(SourceWriter sb, ViewRegistrationInfo reg, string view) => + reg.IsDeclaredByAttribute + ? sb.Append("(object)").Append(view).Append($" as {GeneratedTypeNames.IViewFor}") + : sb.Append(view); } diff --git a/src/ReactiveUI.Binding.SourceGenerators/Helpers/ObservableAsPropertyOptions.cs b/src/ReactiveUI.Binding.SourceGenerators/Helpers/ObservableAsPropertyOptions.cs new file mode 100644 index 00000000..bfef1fef --- /dev/null +++ b/src/ReactiveUI.Binding.SourceGenerators/Helpers/ObservableAsPropertyOptions.cs @@ -0,0 +1,51 @@ +// Copyright (c) 2019-2026 ReactiveUI and Contributors. All rights reserved. +// ReactiveUI and Contributors licenses this file to you under the MIT license. +// See the LICENSE file in the project root for full license information. + +using Microsoft.CodeAnalysis; + +namespace ReactiveUI.Binding.SourceGenerators.Helpers; + +/// The named arguments of an [ObservableAsProperty] that change what the generator writes. +/// Whether the helper field is readonly. +/// Whether the helper field is protected rather than private. +/// The value the property returns until its helper is assigned, or null. +internal readonly record struct ObservableAsPropertyOptions(bool ReadOnly, bool UseProtected, string? InitialValue) +{ + /// Reads the options from an attribute, ignoring any argument of an unexpected type. + /// The [ObservableAsProperty] attribute. + /// The options; the defaults for any argument not given. + internal static ObservableAsPropertyOptions Read(AttributeData attribute) + { + var readOnly = false; + var useProtected = false; + string? initialValue = null; + var arguments = attribute.NamedArguments; + for (var i = 0; i < arguments.Length; i++) + { + var (name, value) = (arguments[i].Key, arguments[i].Value.Value); + switch (name) + { + case "ReadOnly" when value is bool flag: + { + readOnly = flag; + break; + } + + case "UseProtected" when value is bool flag: + { + useProtected = flag; + break; + } + + case "InitialValue" when value is string text: + { + initialValue = text; + break; + } + } + } + + return new(readOnly, useProtected, initialValue); + } +} diff --git a/src/ReactiveUI.Binding.SourceGenerators/Helpers/ViewRegistrationExtractor.cs b/src/ReactiveUI.Binding.SourceGenerators/Helpers/ViewRegistrationExtractor.cs index 31e6e2ae..e9f8be9f 100644 --- a/src/ReactiveUI.Binding.SourceGenerators/Helpers/ViewRegistrationExtractor.cs +++ b/src/ReactiveUI.Binding.SourceGenerators/Helpers/ViewRegistrationExtractor.cs @@ -3,14 +3,35 @@ // See the LICENSE file in the project root for full license information. using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using ReactiveUI.Binding.SourceGenerators.Models; namespace ReactiveUI.Binding.SourceGenerators.Helpers; /// Extracts from class declarations implementing IViewFor<T>. +/// +/// Both runtime flavours are recognised: the lean package's ReactiveUI.Binding.IViewFor<T> and the +/// System.Reactive package's ReactiveUI.Binding.Reactive.IViewFor<T>. The view attributes are read from the +/// same flavour as the interface the view implements. +/// internal static class ViewRegistrationExtractor { + /// The short name of the attribute that leaves a view out of registration. + private const string ExcludeAttributeName = "ExcludeFromViewRegistrationAttribute"; + + /// The short name of the attribute that caches one instance of a view. + private const string SingleInstanceAttributeName = "SingleInstanceViewAttribute"; + + /// The short name of the attribute that registers a view under a contract. + private const string ContractAttributeName = "ViewContractAttribute"; + + /// The RegistrationType values that keep one instance: LazySingleton and Constant. + private const int LazySingletonRegistration = 1; + + /// The RegistrationType value that creates the instance up front, which is resolved lazily here. + private const int ConstantRegistration = 2; + /// Extracts a from a class that implements IViewFor<T>. /// The generator syntax context. /// Cancellation token. @@ -29,50 +50,161 @@ internal static class ViewRegistrationExtractor return null; } - var viewForGenericInterface = semanticModel.Compilation.GetTypeByMetadataName( - Constants.IViewForGenericMetadataName); + var compilation = semanticModel.Compilation; + var lean = compilation.GetTypeByMetadataName(Constants.IViewForGenericMetadataName); + var reactive = compilation.GetTypeByMetadataName(Constants.ReactiveIViewForGenericMetadataName); + if (lean is null && reactive is null) + { + return null; + } - // Walk AllInterfaces to find IViewFor + // Walk AllInterfaces to find IViewFor in either flavour. var allInterfaces = typeSymbol.AllInterfaces; for (var i = 0; i < allInterfaces.Length; i++) { ct.ThrowIfCancellationRequested(); var iface = allInterfaces[i]; - - if (viewForGenericInterface is null - || !iface.IsGenericType - || !SymbolEqualityComparer.Default.Equals(iface.OriginalDefinition, viewForGenericInterface) - || iface.TypeArguments.Length != 1) + if (iface is { IsGenericType: true, TypeArguments.Length: 1 } + && ViewNamespaceOf(iface.OriginalDefinition, lean, reactive) is { } prefix) { - continue; + return Describe(typeSymbol, iface.TypeArguments[0], prefix, compilation, isSingleInstance: false, isDeclaredByAttribute: false); } + } - // Check [ExcludeFromViewRegistration] only after confirming IViewFor is - // resolvable, so attribute resolution via EnsureNotNull cannot throw in - // compilations that don't reference ReactiveUI.Binding. - if (HasAttribute( - typeSymbol, - Constants.ExcludeFromViewRegistrationAttributeMetadataName, - semanticModel.Compilation)) + return null; + } + + /// Extracts a from a class marked with ReactiveUI.SourceGenerators' [IViewFor]. + /// The attribute syntax context. + /// Cancellation token. + /// The registration, or when the view model cannot be resolved or named. + /// + /// That generator adds IViewFor<T> to the class in output no other generator can see, so the view is found + /// from the attribute instead. The attribute is declared in each consumer's assembly, so it is matched by metadata + /// name alone. A RegistrationType of LazySingleton or Constant keeps one instance, created on first + /// resolution. + /// + internal static ViewRegistrationInfo? ExtractFromIViewForAttribute(GeneratorAttributeSyntaxContext context, CancellationToken ct) + { + if (context.TargetSymbol is not INamedTypeSymbol { IsAbstract: false } typeSymbol + || !CanBeNamed(typeSymbol, context.SemanticModel.Compilation)) + { + return null; + } + + var compilation = context.SemanticModel.Compilation; + var attribute = context.Attributes[0]; + return ReferencedViewNamespace(compilation) is { } prefix + && ResolveViewModel(attribute, context.SemanticModel, context.TargetNode.SpanStart, ct) is { } viewModel + && ExtractorValidation.IsReachableFromGeneratedCode(viewModel, compilation) + ? Describe(typeSymbol, viewModel, prefix, compilation, KeepsOneInstance(attribute), isDeclaredByAttribute: true) + : null; + } + + /// Resolves the view model an [IViewFor] names, by type argument or by the type name it was given. + /// The attribute. + /// The semantic model of the class declaration. + /// Where the class is declared, so the name binds with that file's usings and namespace. + /// Cancellation token. + /// The view model type, or when the name is empty or does not bind. + internal static ITypeSymbol? ResolveViewModel(AttributeData attribute, SemanticModel semanticModel, int position, CancellationToken ct) + { + if (attribute.AttributeClass is { IsGenericType: true, TypeArguments: [var typeArgument] }) + { + return typeArgument; + } + + if (attribute.ConstructorArguments is not [{ Value: string name }] || string.IsNullOrWhiteSpace(name)) + { + return null; + } + + var typeSyntax = SyntaxFactory.ParseTypeName(name); + var type = semanticModel.GetSpeculativeTypeInfo(position, typeSyntax, SpeculativeBindingOption.BindAsTypeOrNamespace).Type; + ct.ThrowIfCancellationRequested(); + return type is null or IErrorTypeSymbol ? null : type; + } + + /// Checks whether an [IViewFor]'s RegistrationType keeps one instance of the view. + /// The attribute. + /// for LazySingleton or Constant. + internal static bool KeepsOneInstance(AttributeData attribute) + { + var arguments = attribute.NamedArguments; + for (var i = 0; i < arguments.Length; i++) + { + // An enum argument arrives as its underlying value. + if (arguments[i].Key == "RegistrationType") { - return null; + return arguments[i].Value.Value is LazySingletonRegistration or ConstantRegistration; } + } - var viewModelType = iface.TypeArguments[0]; + return false; + } - var viewModelFqn = viewModelType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat); - var viewFqn = typeSymbol.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat); - var hasParameterlessCtor = HasAccessibleParameterlessConstructor(typeSymbol); - var contract = ExtractViewContract(typeSymbol, semanticModel.Compilation); - var isSingleInstance = HasAttribute( - typeSymbol, - Constants.SingleInstanceViewAttributeMetadataName, - semanticModel.Compilation); + /// Names the flavour an IViewFor<T> definition belongs to. + /// The interface's open definition. + /// The lean runtime's IViewFor<T>, or null when it is not referenced. + /// The System.Reactive runtime's IViewFor<T>, or null when it is not referenced. + /// The flavour's view namespace with the trailing dot, or null when the interface is neither. + private static string? ViewNamespaceOf(INamedTypeSymbol definition, INamedTypeSymbol? lean, INamedTypeSymbol? reactive) + { + if (SymbolEqualityComparer.Default.Equals(definition, lean)) + { + return Constants.LeanViewNamespacePrefix; + } - return new(viewModelFqn, viewFqn, hasParameterlessCtor, contract, isSingleInstance); + return SymbolEqualityComparer.Default.Equals(definition, reactive) ? Constants.ReactiveViewNamespacePrefix : null; + } + + /// Names the flavour of the runtime the compilation references. + /// The consumer compilation. + /// The flavour's view namespace with the trailing dot, or null when neither runtime is referenced. + private static string? ReferencedViewNamespace(Compilation compilation) + { + if (compilation.GetTypeByMetadataName(Constants.IViewForGenericMetadataName) is not null) + { + return Constants.LeanViewNamespacePrefix; } - return null; + return compilation.GetTypeByMetadataName(Constants.ReactiveIViewForGenericMetadataName) is not null + ? Constants.ReactiveViewNamespacePrefix + : null; + } + + /// Builds the registration for a view, reading the view attributes of the flavour it belongs to. + /// The view type. + /// The view model type. + /// The namespace of the flavour's view types, with the trailing dot. + /// The consumer compilation. + /// Whether the view keeps one instance regardless of [SingleInstanceView]. + /// Whether the view was found through [IViewFor]. + /// The registration, or when the view is marked [ExcludeFromViewRegistration]. + private static ViewRegistrationInfo? Describe( + INamedTypeSymbol view, + ITypeSymbol viewModel, + string prefix, + Compilation compilation, + bool isSingleInstance, + bool isDeclaredByAttribute) + { + if (FindAttribute(view, prefix + ExcludeAttributeName, compilation) is not null) + { + return null; + } + + var contract = FindAttribute(view, prefix + ContractAttributeName, compilation) is { ConstructorArguments: [{ Value: string name }] } + ? name + : null; + + return new( + viewModel.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat), + view.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat), + HasAccessibleParameterlessConstructor(view), + contract, + isSingleInstance || FindAttribute(view, prefix + SingleInstanceAttributeName, compilation) is not null, + isDeclaredByAttribute); } /// Checks whether a generated resolver can name the view type. @@ -108,50 +240,21 @@ private static bool IsOpenGeneric(INamedTypeSymbol type) return false; } - /// Checks whether the type has the specified attribute applied. + /// Finds an attribute of the given type on the view. /// The type to check. /// The metadata name of the attribute. /// The compilation for symbol resolution. - /// if the attribute is present; otherwise, . - private static bool HasAttribute(INamedTypeSymbol type, string attributeMetadataName, Compilation compilation) + /// The attribute, or when it is absent. + /// The attribute types live beside the flavour's IViewFor<T>, so they resolve whenever the flavour does. + private static AttributeData? FindAttribute(INamedTypeSymbol type, string attributeMetadataName, Compilation compilation) { - // Attribute types live in the same assembly as IViewFor; if IViewFor resolved, these will too. - var attributeSymbol = InvalidOperationExceptionHelper.EnsureNotNull( - compilation.GetTypeByMetadataName(attributeMetadataName), - attributeMetadataName); - + var attributeSymbol = compilation.GetTypeByMetadataName(attributeMetadataName); var attributes = type.GetAttributes(); for (var i = 0; i < attributes.Length; i++) { if (SymbolEqualityComparer.Default.Equals(attributes[i].AttributeClass, attributeSymbol)) { - return true; - } - } - - return false; - } - - /// Extracts the contract string from [ViewContract("...")] if present. - /// The type to check. - /// The compilation for symbol resolution. - /// The contract string, or if not present. - private static string? ExtractViewContract(INamedTypeSymbol type, Compilation compilation) - { - // ViewContractAttribute lives in the same assembly as IViewFor; always resolvable here. - var attributeSymbol = InvalidOperationExceptionHelper.EnsureNotNull( - compilation.GetTypeByMetadataName(Constants.ViewContractAttributeMetadataName), - Constants.ViewContractAttributeMetadataName); - - var attributes = type.GetAttributes(); - for (var i = 0; i < attributes.Length; i++) - { - var attr = attributes[i]; - if (SymbolEqualityComparer.Default.Equals(attr.AttributeClass, attributeSymbol) - && attr.ConstructorArguments.Length == 1 - && attr.ConstructorArguments[0].Value is string contract) - { - return contract; + return attributes[i]; } } diff --git a/src/ReactiveUI.Binding.SourceGenerators/Models/ObservableAsPropertyInfo.cs b/src/ReactiveUI.Binding.SourceGenerators/Models/ObservableAsPropertyInfo.cs index 0a85c40a..29a475f8 100644 --- a/src/ReactiveUI.Binding.SourceGenerators/Models/ObservableAsPropertyInfo.cs +++ b/src/ReactiveUI.Binding.SourceGenerators/Models/ObservableAsPropertyInfo.cs @@ -10,9 +10,24 @@ namespace ReactiveUI.Binding.SourceGenerators.Models; /// The property's modifiers as declared, which the implementing part repeats. /// The property type, fully qualified with its nullable annotation. /// The property name. +/// The helper field's modifiers: its accessibility, then readonly when asked for. +/// +/// The expression the property returns until its helper is assigned, or null for the type's default. +/// +/// +/// Whether the initial value is held in a backing field, evaluated once, rather than written into the getter. +/// +/// +/// The extern alias and using directives of the file declaring the property, which an initial value +/// expression is written against. Empty when the property stores no initial value. +/// internal sealed record ObservableAsPropertyInfo( PartialTypeDeclaration Declaration, string HintName, string Modifiers, string TypeFullName, - string PropertyName); + string PropertyName, + string HelperModifiers, + string? InitialValue, + bool StoresInitialValue, + EquatableArray Usings); diff --git a/src/ReactiveUI.Binding.SourceGenerators/Models/ViewRegistrationInfo.cs b/src/ReactiveUI.Binding.SourceGenerators/Models/ViewRegistrationInfo.cs index bbb40cb1..ef6a8ebe 100644 --- a/src/ReactiveUI.Binding.SourceGenerators/Models/ViewRegistrationInfo.cs +++ b/src/ReactiveUI.Binding.SourceGenerators/Models/ViewRegistrationInfo.cs @@ -14,9 +14,15 @@ namespace ReactiveUI.Binding.SourceGenerators.Models; /// Whether the view type has a parameterless constructor for direct instantiation. /// The contract string from [ViewContract], or for default registration. /// Whether the view is marked with [SingleInstanceView] for cached singleton resolution. +/// +/// Whether the view was found through ReactiveUI.SourceGenerators' [IViewFor] rather than an IViewFor<T> +/// in its source. That generator adds the interface, which no other generator can see, so the resolver checks for it +/// at run time. +/// internal sealed record ViewRegistrationInfo( string ViewModelFullyQualifiedName, string ViewFullyQualifiedName, bool HasParameterlessConstructor, string? Contract, - bool IsSingleInstance); + bool IsSingleInstance, + bool IsDeclaredByAttribute = false); diff --git a/src/ReactiveUI.Binding/PublicAPI/net10.0-ios/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net10.0-ios/PublicAPI.txt index 7bded4d1..41a6b465 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net10.0-ios/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net10.0-ios/PublicAPI.txt @@ -53,7 +53,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -79,7 +79,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -95,7 +95,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -109,7 +109,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -137,7 +137,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -175,7 +175,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -196,7 +196,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -219,7 +219,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -236,7 +236,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -252,7 +252,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -368,7 +368,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -385,7 +385,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -396,7 +396,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -404,7 +404,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -427,7 +427,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -462,7 +462,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -479,7 +479,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -502,7 +502,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -519,7 +519,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -536,7 +536,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -553,7 +553,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -582,12 +582,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -618,7 +624,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -836,7 +849,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1627,7 +1640,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1635,7 +1648,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1657,7 +1670,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1674,7 +1687,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1875,7 +1888,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1892,7 +1905,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1920,7 +1933,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1958,7 +1971,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2156,7 +2169,7 @@ namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2169,7 +2182,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2246,7 +2259,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2288,28 +2301,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2321,28 +2334,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net10.0-maccatalyst/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net10.0-maccatalyst/PublicAPI.txt index 9d3392ac..ad837212 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net10.0-maccatalyst/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net10.0-maccatalyst/PublicAPI.txt @@ -53,7 +53,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -79,7 +79,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -95,7 +95,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -109,7 +109,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -137,7 +137,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -175,7 +175,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -196,7 +196,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -219,7 +219,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -236,7 +236,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -252,7 +252,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -368,7 +368,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -385,7 +385,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -396,7 +396,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -404,7 +404,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -427,7 +427,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -462,7 +462,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -479,7 +479,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -502,7 +502,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -519,7 +519,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -536,7 +536,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -553,7 +553,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -582,12 +582,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -618,7 +624,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -836,7 +849,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1627,7 +1640,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1635,7 +1648,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1657,7 +1670,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1674,7 +1687,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1875,7 +1888,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1892,7 +1905,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1920,7 +1933,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1958,7 +1971,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2156,7 +2169,7 @@ namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2169,7 +2182,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2246,7 +2259,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2288,28 +2301,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2321,28 +2334,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net10.0-macos/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net10.0-macos/PublicAPI.txt index 4acf61a5..23dc1270 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net10.0-macos/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net10.0-macos/PublicAPI.txt @@ -53,7 +53,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -79,7 +79,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -95,7 +95,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -109,7 +109,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -137,7 +137,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -175,7 +175,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -196,7 +196,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -219,7 +219,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -236,7 +236,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -252,7 +252,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -368,7 +368,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -385,7 +385,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -396,7 +396,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -404,7 +404,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -427,7 +427,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -462,7 +462,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -479,7 +479,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -502,7 +502,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -519,7 +519,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -536,7 +536,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -553,7 +553,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -582,12 +582,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -618,7 +624,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -836,7 +849,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1627,7 +1640,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1635,7 +1648,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1657,7 +1670,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1674,7 +1687,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1875,7 +1888,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1892,7 +1905,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1920,7 +1933,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1958,7 +1971,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2168,7 +2181,7 @@ namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2181,7 +2194,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2258,7 +2271,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2300,28 +2313,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2333,28 +2346,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net10.0-tvos/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net10.0-tvos/PublicAPI.txt index 5b9bd5f2..b380075b 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net10.0-tvos/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net10.0-tvos/PublicAPI.txt @@ -53,7 +53,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -79,7 +79,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -95,7 +95,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -109,7 +109,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -137,7 +137,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -175,7 +175,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -196,7 +196,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -219,7 +219,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -236,7 +236,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -252,7 +252,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -368,7 +368,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -385,7 +385,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -396,7 +396,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -404,7 +404,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -427,7 +427,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -462,7 +462,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -479,7 +479,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -502,7 +502,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -519,7 +519,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -536,7 +536,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -553,7 +553,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -582,12 +582,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -618,7 +624,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -836,7 +849,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1627,7 +1640,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1635,7 +1648,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1657,7 +1670,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1674,7 +1687,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1875,7 +1888,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1892,7 +1905,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1920,7 +1933,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1958,7 +1971,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2156,7 +2169,7 @@ namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2169,7 +2182,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2246,7 +2259,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2288,28 +2301,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2321,28 +2334,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net10.0/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net10.0/PublicAPI.txt index 3b28cb3f..5f24d51c 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net10.0/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net10.0/PublicAPI.txt @@ -52,7 +52,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -78,7 +78,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -94,7 +94,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -108,7 +108,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -136,7 +136,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -174,7 +174,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -195,7 +195,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -218,7 +218,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -235,7 +235,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -251,7 +251,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -367,7 +367,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -395,7 +395,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -403,7 +403,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -426,7 +426,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -461,7 +461,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -478,7 +478,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -501,7 +501,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -518,7 +518,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -535,7 +535,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -552,7 +552,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -581,12 +581,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -617,7 +623,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -835,7 +848,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1626,7 +1639,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1634,7 +1647,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1656,7 +1669,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1673,7 +1686,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1874,7 +1887,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1891,7 +1904,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1919,7 +1932,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1957,7 +1970,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2155,7 +2168,7 @@ namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2168,7 +2181,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2245,7 +2258,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2287,21 +2300,21 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2313,28 +2326,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net11.0-ios/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net11.0-ios/PublicAPI.txt index 7bded4d1..41a6b465 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net11.0-ios/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net11.0-ios/PublicAPI.txt @@ -53,7 +53,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -79,7 +79,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -95,7 +95,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -109,7 +109,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -137,7 +137,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -175,7 +175,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -196,7 +196,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -219,7 +219,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -236,7 +236,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -252,7 +252,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -368,7 +368,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -385,7 +385,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -396,7 +396,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -404,7 +404,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -427,7 +427,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -462,7 +462,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -479,7 +479,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -502,7 +502,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -519,7 +519,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -536,7 +536,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -553,7 +553,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -582,12 +582,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -618,7 +624,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -836,7 +849,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1627,7 +1640,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1635,7 +1648,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1657,7 +1670,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1674,7 +1687,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1875,7 +1888,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1892,7 +1905,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1920,7 +1933,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1958,7 +1971,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2156,7 +2169,7 @@ namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2169,7 +2182,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2246,7 +2259,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2288,28 +2301,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2321,28 +2334,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net11.0-maccatalyst/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net11.0-maccatalyst/PublicAPI.txt index 9d3392ac..ad837212 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net11.0-maccatalyst/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net11.0-maccatalyst/PublicAPI.txt @@ -53,7 +53,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -79,7 +79,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -95,7 +95,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -109,7 +109,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -137,7 +137,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -175,7 +175,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -196,7 +196,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -219,7 +219,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -236,7 +236,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -252,7 +252,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -368,7 +368,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -385,7 +385,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -396,7 +396,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -404,7 +404,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -427,7 +427,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -462,7 +462,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -479,7 +479,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -502,7 +502,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -519,7 +519,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -536,7 +536,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -553,7 +553,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -582,12 +582,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -618,7 +624,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -836,7 +849,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1627,7 +1640,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1635,7 +1648,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1657,7 +1670,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1674,7 +1687,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1875,7 +1888,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1892,7 +1905,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1920,7 +1933,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1958,7 +1971,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2156,7 +2169,7 @@ namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2169,7 +2182,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2246,7 +2259,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2288,28 +2301,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2321,28 +2334,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net11.0-macos/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net11.0-macos/PublicAPI.txt index 9c659616..b369b1b8 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net11.0-macos/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net11.0-macos/PublicAPI.txt @@ -53,7 +53,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -79,7 +79,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -95,7 +95,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -109,7 +109,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -137,7 +137,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -175,7 +175,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -196,7 +196,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -219,7 +219,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -236,7 +236,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -252,7 +252,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -368,7 +368,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -385,7 +385,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -396,7 +396,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -404,7 +404,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -427,7 +427,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -462,7 +462,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -479,7 +479,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -502,7 +502,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -519,7 +519,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -536,7 +536,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -553,7 +553,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -582,12 +582,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -618,7 +624,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -836,7 +849,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1627,7 +1640,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1635,7 +1648,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1657,7 +1670,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1674,7 +1687,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1875,7 +1888,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1892,7 +1905,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1920,7 +1933,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1958,7 +1971,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2168,7 +2181,7 @@ namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2181,7 +2194,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2258,7 +2271,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2300,28 +2313,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2333,28 +2346,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net11.0-tvos/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net11.0-tvos/PublicAPI.txt index 61f29966..5f0e5dfb 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net11.0-tvos/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net11.0-tvos/PublicAPI.txt @@ -53,7 +53,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -79,7 +79,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -95,7 +95,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -109,7 +109,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -137,7 +137,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -175,7 +175,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -196,7 +196,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -219,7 +219,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -236,7 +236,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -252,7 +252,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -368,7 +368,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -385,7 +385,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -396,7 +396,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -404,7 +404,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -427,7 +427,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -462,7 +462,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -479,7 +479,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -502,7 +502,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -519,7 +519,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -536,7 +536,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -553,7 +553,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -582,12 +582,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -618,7 +624,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -836,7 +849,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1627,7 +1640,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1635,7 +1648,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1657,7 +1670,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1674,7 +1687,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1875,7 +1888,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1892,7 +1905,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1920,7 +1933,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1958,7 +1971,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2156,7 +2169,7 @@ namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2169,7 +2182,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2246,7 +2259,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2288,28 +2301,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("KvoProperty: {_keyPath}")] + [System.Diagnostics.DebuggerDisplay("KvoPropertyObservable: KvoProperty: {_keyPath}")] public sealed class KvoPropertyObservable : System.IObservable { public KvoPropertyObservable(Foundation.NSObject source, string keyPath, System.Func getter, bool distinct, bool beforeChange) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2321,28 +2334,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net11.0/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net11.0/PublicAPI.txt index 3b28cb3f..5f24d51c 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net11.0/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net11.0/PublicAPI.txt @@ -52,7 +52,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -78,7 +78,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -94,7 +94,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -108,7 +108,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -136,7 +136,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -174,7 +174,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -195,7 +195,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -218,7 +218,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -235,7 +235,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -251,7 +251,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -367,7 +367,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -395,7 +395,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -403,7 +403,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -426,7 +426,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -461,7 +461,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -478,7 +478,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -501,7 +501,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -518,7 +518,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -535,7 +535,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -552,7 +552,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -581,12 +581,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -617,7 +623,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -835,7 +848,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1626,7 +1639,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1634,7 +1647,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1656,7 +1669,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1673,7 +1686,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1874,7 +1887,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1891,7 +1904,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1919,7 +1932,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1957,7 +1970,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2155,7 +2168,7 @@ namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2168,7 +2181,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2245,7 +2258,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2287,21 +2300,21 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2313,28 +2326,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net462/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net462/PublicAPI.txt index a8970772..66b5afbc 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net462/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net462/PublicAPI.txt @@ -41,7 +41,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -67,7 +67,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -83,7 +83,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -97,7 +97,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -125,7 +125,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -157,7 +157,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -178,7 +178,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -200,7 +200,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -217,7 +217,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -233,7 +233,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -348,7 +348,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -365,7 +365,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -376,7 +376,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -407,7 +407,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -436,7 +436,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -453,7 +453,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -476,7 +476,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -493,7 +493,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -510,7 +510,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -527,7 +527,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -550,12 +550,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -586,7 +592,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -804,7 +817,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1329,7 +1342,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1337,7 +1350,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1359,7 +1372,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1376,7 +1389,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1547,7 +1560,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1564,7 +1577,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1592,7 +1605,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1630,7 +1643,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -1807,7 +1820,7 @@ namespace ReactiveUI.Binding.Mixins namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -1820,7 +1833,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -1883,7 +1896,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -1925,21 +1938,21 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -1951,28 +1964,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net47/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net47/PublicAPI.txt index a8970772..66b5afbc 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net47/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net47/PublicAPI.txt @@ -41,7 +41,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -67,7 +67,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -83,7 +83,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -97,7 +97,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -125,7 +125,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -157,7 +157,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -178,7 +178,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -200,7 +200,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -217,7 +217,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -233,7 +233,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -348,7 +348,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -365,7 +365,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -376,7 +376,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -407,7 +407,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -436,7 +436,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -453,7 +453,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -476,7 +476,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -493,7 +493,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -510,7 +510,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -527,7 +527,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -550,12 +550,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -586,7 +592,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -804,7 +817,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1329,7 +1342,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1337,7 +1350,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1359,7 +1372,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1376,7 +1389,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1547,7 +1560,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1564,7 +1577,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1592,7 +1605,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1630,7 +1643,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -1807,7 +1820,7 @@ namespace ReactiveUI.Binding.Mixins namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -1820,7 +1833,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -1883,7 +1896,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -1925,21 +1938,21 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -1951,28 +1964,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net471/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net471/PublicAPI.txt index a8970772..66b5afbc 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net471/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net471/PublicAPI.txt @@ -41,7 +41,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -67,7 +67,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -83,7 +83,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -97,7 +97,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -125,7 +125,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -157,7 +157,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -178,7 +178,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -200,7 +200,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -217,7 +217,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -233,7 +233,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -348,7 +348,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -365,7 +365,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -376,7 +376,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -407,7 +407,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -436,7 +436,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -453,7 +453,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -476,7 +476,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -493,7 +493,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -510,7 +510,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -527,7 +527,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -550,12 +550,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -586,7 +592,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -804,7 +817,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1329,7 +1342,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1337,7 +1350,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1359,7 +1372,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1376,7 +1389,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1547,7 +1560,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1564,7 +1577,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1592,7 +1605,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1630,7 +1643,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -1807,7 +1820,7 @@ namespace ReactiveUI.Binding.Mixins namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -1820,7 +1833,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -1883,7 +1896,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -1925,21 +1938,21 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -1951,28 +1964,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net472/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net472/PublicAPI.txt index a8970772..66b5afbc 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net472/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net472/PublicAPI.txt @@ -41,7 +41,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -67,7 +67,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -83,7 +83,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -97,7 +97,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -125,7 +125,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -157,7 +157,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -178,7 +178,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -200,7 +200,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -217,7 +217,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -233,7 +233,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -348,7 +348,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -365,7 +365,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -376,7 +376,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -407,7 +407,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -436,7 +436,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -453,7 +453,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -476,7 +476,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -493,7 +493,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -510,7 +510,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -527,7 +527,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -550,12 +550,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -586,7 +592,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -804,7 +817,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1329,7 +1342,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1337,7 +1350,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1359,7 +1372,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1376,7 +1389,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1547,7 +1560,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1564,7 +1577,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1592,7 +1605,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1630,7 +1643,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -1807,7 +1820,7 @@ namespace ReactiveUI.Binding.Mixins namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -1820,7 +1833,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -1883,7 +1896,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -1925,21 +1938,21 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -1951,28 +1964,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net48/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net48/PublicAPI.txt index a8970772..66b5afbc 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net48/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net48/PublicAPI.txt @@ -41,7 +41,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -67,7 +67,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -83,7 +83,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -97,7 +97,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -125,7 +125,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -157,7 +157,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -178,7 +178,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -200,7 +200,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -217,7 +217,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -233,7 +233,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -348,7 +348,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -365,7 +365,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -376,7 +376,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -407,7 +407,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -436,7 +436,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -453,7 +453,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -476,7 +476,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -493,7 +493,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -510,7 +510,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -527,7 +527,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -550,12 +550,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -586,7 +592,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -804,7 +817,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1329,7 +1342,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1337,7 +1350,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1359,7 +1372,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1376,7 +1389,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1547,7 +1560,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1564,7 +1577,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1592,7 +1605,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1630,7 +1643,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -1807,7 +1820,7 @@ namespace ReactiveUI.Binding.Mixins namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -1820,7 +1833,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -1883,7 +1896,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -1925,21 +1938,21 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -1951,28 +1964,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net481/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net481/PublicAPI.txt index a8970772..66b5afbc 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net481/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net481/PublicAPI.txt @@ -41,7 +41,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -67,7 +67,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -83,7 +83,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -97,7 +97,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -125,7 +125,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -157,7 +157,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -178,7 +178,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -200,7 +200,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -217,7 +217,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -233,7 +233,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -348,7 +348,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -365,7 +365,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -376,7 +376,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -407,7 +407,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -436,7 +436,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -453,7 +453,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -476,7 +476,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -493,7 +493,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -510,7 +510,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -527,7 +527,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -550,12 +550,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -586,7 +592,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -804,7 +817,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1329,7 +1342,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1337,7 +1350,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1359,7 +1372,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1376,7 +1389,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1547,7 +1560,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1564,7 +1577,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1592,7 +1605,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1630,7 +1643,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -1807,7 +1820,7 @@ namespace ReactiveUI.Binding.Mixins namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -1820,7 +1833,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -1883,7 +1896,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -1925,21 +1938,21 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -1951,28 +1964,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net8.0/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net8.0/PublicAPI.txt index 9849c071..99982909 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net8.0/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net8.0/PublicAPI.txt @@ -52,7 +52,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -78,7 +78,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -94,7 +94,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -108,7 +108,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -136,7 +136,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -174,7 +174,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -195,7 +195,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -218,7 +218,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -235,7 +235,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -251,7 +251,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -367,7 +367,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -395,7 +395,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -403,7 +403,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -426,7 +426,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -461,7 +461,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -478,7 +478,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -501,7 +501,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -518,7 +518,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -535,7 +535,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -552,7 +552,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -581,12 +581,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -617,7 +623,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -835,7 +848,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1619,7 +1632,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1627,7 +1640,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1649,7 +1662,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1666,7 +1679,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1867,7 +1880,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1884,7 +1897,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1912,7 +1925,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1950,7 +1963,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2148,7 +2161,7 @@ namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2161,7 +2174,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2238,7 +2251,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2280,21 +2293,21 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2306,28 +2319,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/ReactiveUI.Binding/PublicAPI/net9.0/PublicAPI.txt b/src/ReactiveUI.Binding/PublicAPI/net9.0/PublicAPI.txt index 3b28cb3f..5f24d51c 100644 --- a/src/ReactiveUI.Binding/PublicAPI/net9.0/PublicAPI.txt +++ b/src/ReactiveUI.Binding/PublicAPI/net9.0/PublicAPI.txt @@ -52,7 +52,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static System.IDisposable Subscribe(System.IObservable source, System.Action onNext, string bindingExpression) { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} fallback converters registered")] + [System.Diagnostics.DebuggerDisplay("BindingFallbackConverterRegistry: {_snapshot.Converters.Count} fallback converters registered")] public sealed class BindingFallbackConverterRegistry { public BindingFallbackConverterRegistry() { } @@ -78,7 +78,7 @@ namespace ReactiveUI.Binding public static System.IObservable ObserveOnViewThread(System.IObservable source, object? target, ReactiveUI.Binding.IViewThreadInvoker fallback) { } public static void UseSynchronizationContext(System.Threading.SynchronizationContext? context) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} converter")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} converter")] public abstract class BindingTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { protected BindingTypeConverter() { } @@ -94,7 +94,7 @@ namespace ReactiveUI.Binding public static bool TryConvertAny(object? converter, System.Type fromType, object? from, System.Type toType, object? conversionHint, out object? result) { } public static bool TryConvertFallback(ReactiveUI.Binding.IBindingFallbackConverter converter, System.Type fromType, object from, System.Type toType, object? conversionHint, out object? result) { } } - [System.Diagnostics.DebuggerDisplay("Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] + [System.Diagnostics.DebuggerDisplay("BindingTypeConverterRegistry: Typed converters for {_snapshot.ConvertersByTypePair.Count} type pairs")] public sealed class BindingTypeConverterRegistry { public BindingTypeConverterRegistry() { } @@ -108,7 +108,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte -> byte? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ByteToNullableByteTypeConverter: byte -> byte? (affinity {Affinity})")] public sealed class ByteToNullableByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ByteToNullableByteTypeConverter() { } @@ -136,7 +136,7 @@ namespace ReactiveUI.Binding public void ImportFrom(Splat.IReadonlyDependencyResolver resolver) { } } } - [System.Diagnostics.DebuggerDisplay("Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] + [System.Diagnostics.DebuggerDisplay("ConverterService: Typed: {TypedConverters}; fallback: {FallbackConverters}; set-method: {SetMethodConverters}")] public sealed class ConverterService { public ConverterService() { } @@ -174,7 +174,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal -> decimal? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DecimalToNullableDecimalTypeConverter: decimal -> decimal? (affinity {Affinity})")] public sealed class DecimalToNullableDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DecimalToNullableDecimalTypeConverter() { } @@ -195,7 +195,7 @@ namespace ReactiveUI.Binding { public static void RegisterDefaults(ReactiveUI.Binding.ConverterService service) { } } - [System.Diagnostics.DebuggerDisplay("Mappings = {_mappings.Count}")] + [System.Diagnostics.DebuggerDisplay("DefaultViewLocator: Mappings = {_mappings.Count}")] public sealed class DefaultViewLocator : ReactiveUI.Binding.IViewLocator { public DefaultViewLocator() { } @@ -218,7 +218,7 @@ namespace ReactiveUI.Binding [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public static void SetGeneratedViewDispatch(System.Func dispatch) { } } - [System.Diagnostics.DebuggerDisplay("double -> double? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("DoubleToNullableDoubleTypeConverter: double -> double? (affinity {Affinity})")] public sealed class DoubleToNullableDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public DoubleToNullableDoubleTypeConverter() { } @@ -235,7 +235,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(double from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("{FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] + [System.Diagnostics.DebuggerDisplay("EqualityTypeConverter: {FromType.Name,nq} -> {ToType.Name,nq} by equality with the conversion hint")] public sealed class EqualityTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public EqualityTypeConverter() { } @@ -251,7 +251,7 @@ namespace ReactiveUI.Binding public ExcludeFromViewRegistrationAttribute() { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainParameters: ExpressionChain: {Expression}, BeforeChange = {BeforeChange}, Distinct = {IsDistinct}")] public readonly record struct ExpressionChainParameters : System.IEquatable> { public ExpressionChainParameters(TSender? Source, System.Linq.Expressions.Expression? Expression, System.Linq.Expressions.Expression[] Links, bool BeforeChange, bool SkipInitial, bool IsDistinct, bool SuppressWarnings) { } @@ -367,7 +367,7 @@ namespace ReactiveUI.Binding bool Claims(object target) { } void Post(object target, System.Action callback, object? state) { } } - [System.Diagnostics.DebuggerDisplay("int -> int? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("IntegerToNullableIntegerTypeConverter: int -> int? (affinity {Affinity})")] public sealed class IntegerToNullableIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public IntegerToNullableIntegerTypeConverter() { } @@ -384,7 +384,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("Handlers = {_handlers.Length}")] + [System.Diagnostics.DebuggerDisplay("Interaction: Handlers = {_handlers.Length}")] public class Interaction : ReactiveUI.Binding.IInteraction { public Interaction() { } @@ -395,7 +395,7 @@ namespace ReactiveUI.Binding public System.IDisposable RegisterHandler(System.Func, System.Threading.Tasks.Task> handler) { } public System.IDisposable RegisterHandler(System.Func, System.IObservable> handler) { } } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] + [System.Diagnostics.DebuggerDisplay("InteractionContext: Input = {Input}, Handled = {_outputSet == 1}, Output = {_output}")] public sealed class InteractionContext : ReactiveUI.Binding.IOutputContext { public TInput Input { get; } @@ -403,7 +403,7 @@ namespace ReactiveUI.Binding public TOutput GetOutput() { } public void SetOutput(TOutput output) { } } - [System.Diagnostics.DebuggerDisplay("long -> long? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("LongToNullableLongTypeConverter: long -> long? (affinity {Affinity})")] public sealed class LongToNullableLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public LongToNullableLongTypeConverter() { } @@ -426,7 +426,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(bool? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("byte? -> byte (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableByteToByteTypeConverter: byte? -> byte (affinity {Affinity})")] public sealed class NullableByteToByteTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableByteToByteTypeConverter() { } @@ -461,7 +461,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.DateTime? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("decimal? -> decimal (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDecimalToDecimalTypeConverter: decimal? -> decimal (affinity {Affinity})")] public sealed class NullableDecimalToDecimalTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDecimalToDecimalTypeConverter() { } @@ -478,7 +478,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(decimal? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("double? -> double (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableDoubleToDoubleTypeConverter: double? -> double (affinity {Affinity})")] public sealed class NullableDoubleToDoubleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableDoubleToDoubleTypeConverter() { } @@ -501,7 +501,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.Guid? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("int? -> int (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableIntegerToIntegerTypeConverter: int? -> int (affinity {Affinity})")] public sealed class NullableIntegerToIntegerTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableIntegerToIntegerTypeConverter() { } @@ -518,7 +518,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(int? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("long? -> long (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableLongToLongTypeConverter: long? -> long (affinity {Affinity})")] public sealed class NullableLongToLongTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableLongToLongTypeConverter() { } @@ -535,7 +535,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(long? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("short? -> short (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableShortToShortTypeConverter: short? -> short (affinity {Affinity})")] public sealed class NullableShortToShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableShortToShortTypeConverter() { } @@ -552,7 +552,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(short? from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("float? -> float (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("NullableSingleToSingleTypeConverter: float? -> float (affinity {Affinity})")] public sealed class NullableSingleToSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public NullableSingleToSingleTypeConverter() { } @@ -581,12 +581,18 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(System.TimeSpan? from, object? conversionHint, out string? result) { } } - [System.AttributeUsage(System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)] + [System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyAttribute: ReadOnly = {ReadOnly}, UseProtected = {UseProtected}, InitialValue = {InitialValue}")] public sealed class ObservableAsPropertyAttribute : System.Attribute { public ObservableAsPropertyAttribute() { } + public ReactiveUI.Binding.ObservableAsPropertyInheritance Inheritance { get; set; } + public string? InitialValue { get; set; } + public string? PropertyName { get; set; } + public bool ReadOnly { get; set; } + public bool UseProtected { get; set; } } - [System.Diagnostics.DebuggerDisplay("Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] + [System.Diagnostics.DebuggerDisplay("ObservableAsPropertyHelper: Value = {_core.LastValue}, IsSubscribed = {IsSubscribed}")] public sealed class ObservableAsPropertyHelper : System.IDisposable { public ObservableAsPropertyHelper(System.IObservable observable, System.Action onChanged) { } @@ -617,7 +623,14 @@ namespace ReactiveUI.Binding public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue) { } public static ReactiveUI.Binding.ObservableAsPropertyHelper Default(T? initialValue, ReactiveUI.Primitives.Concurrency.ISequencer? scheduler) { } } - [System.Diagnostics.DebuggerDisplay("Expression = {Expression}, Sender = {Sender}, Value = {Value}")] + public enum ObservableAsPropertyInheritance + { + None = 0, + Virtual = 1, + Override = 2, + New = 3, + } + [System.Diagnostics.DebuggerDisplay("ObservedChange: Expression = {Expression}, Sender = {Sender}, Value = {Value}")] public class ObservedChange : ReactiveUI.Binding.IObservedChange { public ObservedChange(TSender sender, System.Linq.Expressions.Expression? expression, TValue value) { } @@ -835,7 +848,7 @@ namespace ReactiveUI.Binding public T8 Property8 { get; init; } public T9 Property9 { get; init; } } - [System.Diagnostics.DebuggerDisplay("{Direction} binding on {View}")] + [System.Diagnostics.DebuggerDisplay("ReactiveBinding: {Direction} binding on {View}")] public sealed class ReactiveBinding : ReactiveUI.Binding.IReactiveBinding where TView : ReactiveUI.Binding.IViewFor { public ReactiveBinding(TView view, System.IObservable changed, ReactiveUI.Binding.BindingDirection direction, System.IDisposable subscription) { } @@ -1626,7 +1639,7 @@ namespace ReactiveUI.Binding [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] public static System.IObservable WhenChangingUnsafe(this TObj objectToMonitor, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Linq.Expressions.Expression> property13, System.Linq.Expressions.Expression> property14, System.Linq.Expressions.Expression> property15, System.Linq.Expressions.Expression> property16, System.Func conversionFunc) where TObj : class { } } - [System.Diagnostics.DebuggerDisplay("{_snapshot.Converters.Count} set-method converters registered")] + [System.Diagnostics.DebuggerDisplay("SetMethodBindingConverterRegistry: {_snapshot.Converters.Count} set-method converters registered")] public sealed class SetMethodBindingConverterRegistry { public SetMethodBindingConverterRegistry() { } @@ -1634,7 +1647,7 @@ namespace ReactiveUI.Binding public void Register(ReactiveUI.Binding.ISetMethodBindingConverter converter) { } public ReactiveUI.Binding.ISetMethodBindingConverter? TryGetConverter(System.Type? fromType, System.Type? toType) { } } - [System.Diagnostics.DebuggerDisplay("short -> short? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("ShortToNullableShortTypeConverter: short -> short? (affinity {Affinity})")] public sealed class ShortToNullableShortTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public ShortToNullableShortTypeConverter() { } @@ -1656,7 +1669,7 @@ namespace ReactiveUI.Binding { public SingleInstanceViewAttribute() { } } - [System.Diagnostics.DebuggerDisplay("float -> float? (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("SingleToNullableSingleTypeConverter: float -> float? (affinity {Affinity})")] public sealed class SingleToNullableSingleTypeConverter : ReactiveUI.Binding.IBindingTypeConverter { public SingleToNullableSingleTypeConverter() { } @@ -1673,7 +1686,7 @@ namespace ReactiveUI.Binding public override int GetAffinityForObjects() { } public override bool TryConvert(float from, object? conversionHint, out string? result) { } } - [System.Diagnostics.DebuggerDisplay("string -> string identity (affinity {Affinity})")] + [System.Diagnostics.DebuggerDisplay("StringConverter: string -> string identity (affinity {Affinity})")] public sealed class StringConverter : ReactiveUI.Binding.IBindingTypeConverter { public StringConverter() { } @@ -1874,7 +1887,7 @@ namespace ReactiveUI.Binding ViewToViewModel = 0, ViewModelToView = 1, } - [System.Diagnostics.DebuggerDisplay("Input = {Input}, Interaction = {Interaction}")] + [System.Diagnostics.DebuggerDisplay("UnhandledInteractionException: Input = {Input}, Interaction = {Interaction}")] public class UnhandledInteractionException : System.Exception { public UnhandledInteractionException() { } @@ -1891,7 +1904,7 @@ namespace ReactiveUI.Binding public override bool TryConvert(System.Uri? from, object? conversionHint, out string? result) { } } [System.AttributeUsage(System.AttributeTargets.Class)] - [System.Diagnostics.DebuggerDisplay("Contract = {Contract}")] + [System.Diagnostics.DebuggerDisplay("ViewContractAttribute: Contract = {Contract}")] public sealed class ViewContractAttribute : System.Attribute { public ViewContractAttribute(string contract) { } @@ -1919,7 +1932,7 @@ namespace ReactiveUI.Binding public ViewLocatorNotFoundException(string message) { } public ViewLocatorNotFoundException(string message, System.Exception innerException) { } } - [System.Diagnostics.DebuggerDisplay("Locator = {_locator}")] + [System.Diagnostics.DebuggerDisplay("ViewMappingBuilder: Locator = {_locator}")] public sealed class ViewMappingBuilder { [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] @@ -1957,7 +1970,7 @@ namespace ReactiveUI.Binding.Builder public interface IReactiveUIBindingInstance : Splat.Builder.IAppInstance { } - [System.Diagnostics.DebuggerDisplay("CoreServicesRegistered = {_coreRegistered}")] + [System.Diagnostics.DebuggerDisplay("ReactiveUIBindingBuilder: CoreServicesRegistered = {_coreRegistered}")] public sealed class ReactiveUIBindingBuilder : Splat.Builder.AppBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingBuilder, ReactiveUI.Binding.Builder.IReactiveUIBindingInstance { public ReactiveUIBindingBuilder(Splat.IMutableDependencyResolver resolver, Splat.IReadonlyDependencyResolver? current) { } @@ -2155,7 +2168,7 @@ namespace ReactiveUI.Binding.ObservableForProperty { [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Evaluates expression-based member chains via reflection; members may be trimmed.")] - [System.Diagnostics.DebuggerDisplay("{_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ExpressionChainSink: {_expression}, Links = {_links.Length}, BeforeChange = {_beforeChange}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ExpressionChainSink : System.IObservable> { public ExpressionChainSink(TSender? source, System.Linq.Expressions.Expression? expression, System.Linq.Expressions.Expression[] links, bool beforeChange, bool skipInitial, bool isDistinct, bool suppressWarnings) { } @@ -2168,7 +2181,7 @@ namespace ReactiveUI.Binding.ObservableForProperty public System.IObservable> GetNotificationForProperty(object sender, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChanged, bool suppressWarnings) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("{_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] + [System.Diagnostics.DebuggerDisplay("ObservableForPropertySink: {_expression}, Sender = {_sender}, SkipInitial = {_skipInitial}, Distinct = {_isDistinct}")] public sealed class ObservableForPropertySink : System.IObservable> { public ObservableForPropertySink(TSender sender, System.Linq.Expressions.Expression expression, System.IObservable> notifications, System.Func readValue, bool skipInitial, bool isDistinct) { } @@ -2245,7 +2258,7 @@ namespace ReactiveUI.Binding.Observables public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("CallbackProperty: {_source}, Distinct = {_distinct}")] + [System.Diagnostics.DebuggerDisplay("CallbackPropertyObservable: CallbackProperty: {_source}, Distinct = {_distinct}")] public sealed class CallbackPropertyObservable : System.IObservable { public CallbackPropertyObservable(TSource source, System.Func subscribe, System.Func getter, bool distinct) { } @@ -2287,21 +2300,21 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Create(System.IObservable source1, System.IObservable source2, System.IObservable source3, System.IObservable source4, System.IObservable source5, System.IObservable source6, System.IObservable source7, System.IObservable source8, System.IObservable source9, System.IObservable source10, System.IObservable source11, System.IObservable source12, System.IObservable source13, System.IObservable source14, System.IObservable source15, System.IObservable source16, System.Func resultSelector) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("DeferredProperty: {_source}")] + [System.Diagnostics.DebuggerDisplay("DeferredPropertyObservable: DeferredProperty: {_source}")] public sealed class DeferredPropertyObservable : System.IObservable { public DeferredPropertyObservable(TSource source, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("EventObservable: Getter = {_getter}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class EventObservable : System.IObservable { public EventObservable(System.Action addHandler, System.Action removeHandler, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] + [System.Diagnostics.DebuggerDisplay("NotifyPropertyChangedObservable: Property = {_observedPropertyName}, Sender = {_sender}, BeforeChanged = {_beforeChanged}")] public sealed class NotifyPropertyChangedObservable : System.IObservable> { public NotifyPropertyChangedObservable(object sender, System.Linq.Expressions.Expression expression, string expectedName, bool beforeChanged) { } @@ -2313,28 +2326,28 @@ namespace ReactiveUI.Binding.Observables public static System.IObservable Choose(object source, System.Linq.Expressions.Expression expression, string propertyName, bool beforeChange, int generatedAffinity, System.Func getter, System.IObservable generated) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] + [System.Diagnostics.DebuggerDisplay("PluginPropertyObservable: Property = {_propertyName}, Source = {_source}, BeforeChange = {_beforeChange}")] public sealed class PluginPropertyObservable : System.IObservable { public PluginPropertyObservable(ReactiveUI.Binding.ICreatesObservableForProperty plugin, object source, System.Linq.Expressions.Expression expression, string propertyName, System.Func getter, bool beforeChange, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}")] + [System.Diagnostics.DebuggerDisplay("PropertyChangingObservable: Property = {_propertyName}, Source = {_source}")] public sealed class PropertyChangingObservable : System.IObservable { public PropertyChangingObservable(System.ComponentModel.INotifyPropertyChanging source, string propertyName, System.Func getter) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] + [System.Diagnostics.DebuggerDisplay("PropertyObservable: Property = {_propertyName}, Source = {_source}, DistinctUntilChanged = {_distinctUntilChanged}")] public sealed class PropertyObservable : System.IObservable { public PropertyObservable(System.ComponentModel.INotifyPropertyChanged source, string propertyName, System.Func getter, bool distinctUntilChanged) { } public System.IDisposable Subscribe(System.IObserver observer) { } } [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - [System.Diagnostics.DebuggerDisplay("UnchangingProperty: {_value}")] + [System.Diagnostics.DebuggerDisplay("UnchangingPropertyObservable: UnchangingProperty: {_value}")] public sealed class UnchangingPropertyObservable : System.IObservable { public UnchangingPropertyObservable(T value) { } diff --git a/src/benchmarks/ReactiveUI.Binding.Benchmarks.ReactiveUI/ReactiveUIBindingBenchmark.cs b/src/benchmarks/ReactiveUI.Binding.Benchmarks.ReactiveUI/ReactiveUIBindingBenchmark.cs index 0161d8e1..f5192ca8 100644 --- a/src/benchmarks/ReactiveUI.Binding.Benchmarks.ReactiveUI/ReactiveUIBindingBenchmark.cs +++ b/src/benchmarks/ReactiveUI.Binding.Benchmarks.ReactiveUI/ReactiveUIBindingBenchmark.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Benchmarks; /// ReactiveUI expression-tree binding benchmarks for comparison. -[DebuggerDisplay("Expression-tree binding over {PropertyChangeCount} changes")] +[DebuggerDisplay("ReactiveUIBindingBenchmark: Expression-tree binding over {PropertyChangeCount} changes")] public class ReactiveUIBindingBenchmark { /// The number of property changes to fire during each benchmark iteration. diff --git a/src/benchmarks/ReactiveUI.Binding.Benchmarks.ReactiveUI/ReactiveUIObservationBenchmark.cs b/src/benchmarks/ReactiveUI.Binding.Benchmarks.ReactiveUI/ReactiveUIObservationBenchmark.cs index c43a80c7..4837ae89 100644 --- a/src/benchmarks/ReactiveUI.Binding.Benchmarks.ReactiveUI/ReactiveUIObservationBenchmark.cs +++ b/src/benchmarks/ReactiveUI.Binding.Benchmarks.ReactiveUI/ReactiveUIObservationBenchmark.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Benchmarks; /// ReactiveUI expression-tree WhenAnyValue benchmarks for comparison. -[DebuggerDisplay("Expression-tree observation over {PropertyChangeCount} changes")] +[DebuggerDisplay("ReactiveUIObservationBenchmark: Expression-tree observation over {PropertyChangeCount} changes")] public class ReactiveUIObservationBenchmark { /// The number of property changes to fire during each benchmark iteration. diff --git a/src/benchmarks/ReactiveUI.Binding.Benchmarks/Mocks/BenchmarkChildViewModel.cs b/src/benchmarks/ReactiveUI.Binding.Benchmarks/Mocks/BenchmarkChildViewModel.cs index ff96a10c..b94e7381 100644 --- a/src/benchmarks/ReactiveUI.Binding.Benchmarks/Mocks/BenchmarkChildViewModel.cs +++ b/src/benchmarks/ReactiveUI.Binding.Benchmarks/Mocks/BenchmarkChildViewModel.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Benchmarks.Mocks; /// A child view model for deep chain benchmarks. -[DebuggerDisplay("Value = {Value}")] +[DebuggerDisplay("BenchmarkChildViewModel: Value = {Value}")] public class BenchmarkChildViewModel : INotifyPropertyChanged { /// diff --git a/src/benchmarks/ReactiveUI.Binding.Benchmarks/Mocks/BenchmarkView.cs b/src/benchmarks/ReactiveUI.Binding.Benchmarks/Mocks/BenchmarkView.cs index 806bf143..05661df1 100644 --- a/src/benchmarks/ReactiveUI.Binding.Benchmarks/Mocks/BenchmarkView.cs +++ b/src/benchmarks/ReactiveUI.Binding.Benchmarks/Mocks/BenchmarkView.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Benchmarks.Mocks; /// A view used for binding benchmarks. Implements to support ReactiveUI's expression-tree-based binding APIs. -[DebuggerDisplay("DisplayName = {DisplayName}, DisplayAge = {DisplayAge}")] +[DebuggerDisplay("BenchmarkView: DisplayName = {DisplayName}, DisplayAge = {DisplayAge}")] public class BenchmarkView : IViewFor, INotifyPropertyChanged { /// diff --git a/src/benchmarks/ReactiveUI.Binding.Benchmarks/Mocks/BenchmarkViewModel.cs b/src/benchmarks/ReactiveUI.Binding.Benchmarks/Mocks/BenchmarkViewModel.cs index 0155347a..2eef7945 100644 --- a/src/benchmarks/ReactiveUI.Binding.Benchmarks/Mocks/BenchmarkViewModel.cs +++ b/src/benchmarks/ReactiveUI.Binding.Benchmarks/Mocks/BenchmarkViewModel.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Benchmarks.Mocks; /// A view model used for benchmarking source-generated property observation and binding. -[DebuggerDisplay("Name = {Name}, Age = {Age}")] +[DebuggerDisplay("BenchmarkViewModel: Name = {Name}, Age = {Age}")] public class BenchmarkViewModel : INotifyPropertyChanged, INotifyPropertyChanging { /// diff --git a/src/examples/Documentation/Common/Banking/Account.cs b/src/examples/Documentation/Common/Banking/Account.cs index 4ce3eefb..b2697cbe 100644 --- a/src/examples/Documentation/Common/Banking/Account.cs +++ b/src/examples/Documentation/Common/Banking/Account.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// A bank account. Each property raises PropertyChanged, and changes with . -[System.Diagnostics.DebuggerDisplay("{Id} {Name}: {Balance} {Currency}")] +[System.Diagnostics.DebuggerDisplay("Account: {Id} {Name}: {Balance} {Currency}")] public sealed class Account : ObservableObject { /// Gets or sets the number that identifies the account, such as ACC-1001. diff --git a/src/examples/Documentation/Common/Banking/AccountsView.cs b/src/examples/Documentation/Common/Banking/AccountsView.cs index f2b03d03..25f933a4 100644 --- a/src/examples/Documentation/Common/Banking/AccountsView.cs +++ b/src/examples/Documentation/Common/Banking/AccountsView.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// The accounts screen: the accounts, the balance of the selected account and its transactions. A real UI framework /// builds these controls from markup; here the view creates them in code. /// -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("AccountsView: ViewModel = {ViewModel}")] public sealed class AccountsView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Common/Banking/AccountsViewModel.cs b/src/examples/Documentation/Common/Banking/AccountsViewModel.cs index 006362f9..1b6082ef 100644 --- a/src/examples/Documentation/Common/Banking/AccountsViewModel.cs +++ b/src/examples/Documentation/Common/Banking/AccountsViewModel.cs @@ -12,7 +12,7 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// Each command starts the matching method and returns; await the method itself to wait for its work. A refused /// request never throws from a method. It sets . /// -[System.Diagnostics.DebuggerDisplay("Account = {SelectedAccount}, TotalBalance = {TotalBalance}")] +[System.Diagnostics.DebuggerDisplay("AccountsViewModel: Account = {SelectedAccount}, TotalBalance = {TotalBalance}")] public sealed class AccountsViewModel : ObservableObject { /// The backend the view model calls. diff --git a/src/examples/Documentation/Common/Banking/BankingException.cs b/src/examples/Documentation/Common/Banking/BankingException.cs index 43c8e55b..1893128f 100644 --- a/src/examples/Documentation/Common/Banking/BankingException.cs +++ b/src/examples/Documentation/Common/Banking/BankingException.cs @@ -5,7 +5,7 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// Reports that the core banking backend refused a request. -[System.Diagnostics.DebuggerDisplay("Failure = {Failure}, Message = {Message}")] +[System.Diagnostics.DebuggerDisplay("BankingException: Failure = {Failure}, Message = {Message}")] public sealed class BankingException : Exception { /// Initializes a new instance of the class. diff --git a/src/examples/Documentation/Common/Banking/InMemoryBankingBackend.cs b/src/examples/Documentation/Common/Banking/InMemoryBankingBackend.cs index f4307d0e..fa659f44 100644 --- a/src/examples/Documentation/Common/Banking/InMemoryBankingBackend.cs +++ b/src/examples/Documentation/Common/Banking/InMemoryBankingBackend.cs @@ -14,7 +14,7 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// takes to answer. It hands out copies, so changing an account you read does not change the /// bank until you make a transfer. /// -[System.Diagnostics.DebuggerDisplay("DailyLimit = {DailyLimit}, IsUnavailable = {IsUnavailable}")] +[System.Diagnostics.DebuggerDisplay("InMemoryBankingBackend: DailyLimit = {DailyLimit}, IsUnavailable = {IsUnavailable}")] public sealed class InMemoryBankingBackend : IBankingBackend { /// The currency of every account. diff --git a/src/examples/Documentation/Common/Banking/Payee.cs b/src/examples/Documentation/Common/Banking/Payee.cs index c34781cf..35527a21 100644 --- a/src/examples/Documentation/Common/Banking/Payee.cs +++ b/src/examples/Documentation/Common/Banking/Payee.cs @@ -9,5 +9,5 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// The name of the payee. /// The account that receives the money. /// The most the customer allows in one transfer to this payee, or when there is no limit. -[System.Diagnostics.DebuggerDisplay("{Name}")] +[System.Diagnostics.DebuggerDisplay("Payee: {Name}")] public sealed record Payee(int Id, string Name, string AccountNumber, decimal? TransferLimit); diff --git a/src/examples/Documentation/Common/Banking/Transaction.cs b/src/examples/Documentation/Common/Banking/Transaction.cs index d84d50a6..7798d208 100644 --- a/src/examples/Documentation/Common/Banking/Transaction.cs +++ b/src/examples/Documentation/Common/Banking/Transaction.cs @@ -11,5 +11,5 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// What the transaction was for. /// The money moved. It is negative when money leaves the account. /// The balance of the account after the transaction. -[System.Diagnostics.DebuggerDisplay("{Description}: {Amount}")] +[System.Diagnostics.DebuggerDisplay("Transaction: {Description}: {Amount}")] public sealed record Transaction(int Id, string AccountId, DateTimeOffset PostedAt, string Description, decimal Amount, decimal BalanceAfter); diff --git a/src/examples/Documentation/Common/Banking/TransferDraft.cs b/src/examples/Documentation/Common/Banking/TransferDraft.cs index 746eefa0..c74e2bf2 100644 --- a/src/examples/Documentation/Common/Banking/TransferDraft.cs +++ b/src/examples/Documentation/Common/Banking/TransferDraft.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// The transfer the customer is filling in. Each property raises PropertyChanged. -[System.Diagnostics.DebuggerDisplay("{Amount} to {Payee}")] +[System.Diagnostics.DebuggerDisplay("TransferDraft: {Amount} to {Payee}")] public sealed class TransferDraft : ObservableObject { /// Gets or sets the account the money leaves. diff --git a/src/examples/Documentation/Common/Banking/TransferReceipt.cs b/src/examples/Documentation/Common/Banking/TransferReceipt.cs index 03bade06..c7c8d36a 100644 --- a/src/examples/Documentation/Common/Banking/TransferReceipt.cs +++ b/src/examples/Documentation/Common/Banking/TransferReceipt.cs @@ -9,5 +9,5 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// The amount sent. /// The balance of the source account after the transfer. /// When the bank made the transfer. -[System.Diagnostics.DebuggerDisplay("{ReceiptNumber}: {Amount}")] +[System.Diagnostics.DebuggerDisplay("TransferReceipt: {ReceiptNumber}: {Amount}")] public sealed record TransferReceipt(string ReceiptNumber, decimal Amount, decimal NewBalance, DateTimeOffset CompletedAt); diff --git a/src/examples/Documentation/Common/Banking/TransferRequest.cs b/src/examples/Documentation/Common/Banking/TransferRequest.cs index 3aeb7d81..456a110b 100644 --- a/src/examples/Documentation/Common/Banking/TransferRequest.cs +++ b/src/examples/Documentation/Common/Banking/TransferRequest.cs @@ -9,5 +9,5 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// The payee the money goes to. /// The amount to send. /// The text that appears on the payee's statement. -[System.Diagnostics.DebuggerDisplay("{Amount} from {SourceAccountId} to payee {PayeeId}")] +[System.Diagnostics.DebuggerDisplay("TransferRequest: {Amount} from {SourceAccountId} to payee {PayeeId}")] public sealed record TransferRequest(string SourceAccountId, int PayeeId, decimal Amount, string Reference); diff --git a/src/examples/Documentation/Common/Banking/TransferValidation.cs b/src/examples/Documentation/Common/Banking/TransferValidation.cs index 5d180ed1..ad4a3446 100644 --- a/src/examples/Documentation/Common/Banking/TransferValidation.cs +++ b/src/examples/Documentation/Common/Banking/TransferValidation.cs @@ -6,7 +6,7 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// What the backend found when it checked a transfer without making it. /// The rules the transfer breaks; empty when the bank would accept it. -[System.Diagnostics.DebuggerDisplay("Errors = {Errors.Count}")] +[System.Diagnostics.DebuggerDisplay("TransferValidation: Errors = {Errors.Count}")] public sealed record TransferValidation(IReadOnlyList Errors) { /// Gets a value indicating whether the transfer breaks no rule. diff --git a/src/examples/Documentation/Common/Banking/TransferView.cs b/src/examples/Documentation/Common/Banking/TransferView.cs index 4bbf7f63..604de3f7 100644 --- a/src/examples/Documentation/Common/Banking/TransferView.cs +++ b/src/examples/Documentation/Common/Banking/TransferView.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// The transfer screen: the account and payee pickers, the amount and reference boxes, and the send button. A real /// UI framework builds these controls from markup; here the view creates them in code. /// -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("TransferView: ViewModel = {ViewModel}")] public sealed class TransferView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Common/Banking/TransferViewModel.cs b/src/examples/Documentation/Common/Banking/TransferViewModel.cs index f4d703d2..12ab0777 100644 --- a/src/examples/Documentation/Common/Banking/TransferViewModel.cs +++ b/src/examples/Documentation/Common/Banking/TransferViewModel.cs @@ -14,7 +14,7 @@ namespace ReactiveUI.Binding.Documentation.Banking; /// one, asks the view for an approval code. Each command starts the matching method and returns; await the method /// itself to wait for its work. A refused request never throws from a method. It sets . /// -[System.Diagnostics.DebuggerDisplay("Draft = {Draft}, IsValid = {IsValid}")] +[System.Diagnostics.DebuggerDisplay("TransferViewModel: Draft = {Draft}, IsValid = {IsValid}")] public sealed class TransferViewModel : ObservableObject { /// The separator between the messages of . diff --git a/src/examples/Documentation/Common/CloudStorage/Bucket.cs b/src/examples/Documentation/Common/CloudStorage/Bucket.cs index 8175b8b6..72a45f8e 100644 --- a/src/examples/Documentation/Common/CloudStorage/Bucket.cs +++ b/src/examples/Documentation/Common/CloudStorage/Bucket.cs @@ -8,5 +8,5 @@ namespace ReactiveUI.Binding.Documentation.CloudStorage; /// The name of the bucket, unique across the service. /// The region that stores the bucket, such as ap-southeast-2. /// When the bucket was created. -[System.Diagnostics.DebuggerDisplay("{Name} ({Region})")] +[System.Diagnostics.DebuggerDisplay("Bucket: {Name} ({Region})")] public sealed record Bucket(string Name, string Region, DateTimeOffset CreatedAt); diff --git a/src/examples/Documentation/Common/CloudStorage/InMemoryObjectStorage.cs b/src/examples/Documentation/Common/CloudStorage/InMemoryObjectStorage.cs index 68edb698..28d706a5 100644 --- a/src/examples/Documentation/Common/CloudStorage/InMemoryObjectStorage.cs +++ b/src/examples/Documentation/Common/CloudStorage/InMemoryObjectStorage.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.CloudStorage; /// an upload, take time, so an example decides how long each step lasts. and /// make the service refuse requests. /// -[System.Diagnostics.DebuggerDisplay("Connection = {Connection.State}, Throttled = {_throttled}")] +[System.Diagnostics.DebuggerDisplay("InMemoryObjectStorage: Connection = {Connection.State}, Throttled = {_throttled}")] public sealed class InMemoryObjectStorage : IObjectStorage { /// The size of one part of an upload, 4 MiB. diff --git a/src/examples/Documentation/Common/CloudStorage/StorageBrowserView.cs b/src/examples/Documentation/Common/CloudStorage/StorageBrowserView.cs index cb8df2e7..1fe37c4c 100644 --- a/src/examples/Documentation/Common/CloudStorage/StorageBrowserView.cs +++ b/src/examples/Documentation/Common/CloudStorage/StorageBrowserView.cs @@ -10,7 +10,7 @@ namespace ReactiveUI.Binding.Documentation.CloudStorage; /// The storage browser screen: a bucket list, a path box, an object list and an upload progress bar. A real UI /// framework builds these controls from markup; here the view creates them in code. /// -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("StorageBrowserView: ViewModel = {ViewModel}")] public sealed class StorageBrowserView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Common/CloudStorage/StorageBrowserViewModel.cs b/src/examples/Documentation/Common/CloudStorage/StorageBrowserViewModel.cs index a0aba1c9..5e132937 100644 --- a/src/examples/Documentation/Common/CloudStorage/StorageBrowserViewModel.cs +++ b/src/examples/Documentation/Common/CloudStorage/StorageBrowserViewModel.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.CloudStorage; /// and follows the state of the link. Each command starts the matching ...Async method and returns; await /// the method to wait for the work. A failed request never throws from either. It sets . /// -[System.Diagnostics.DebuggerDisplay("Bucket = {SelectedBucket}, Objects = {Objects.Count}, UploadPercent = {UploadPercent}")] +[System.Diagnostics.DebuggerDisplay("StorageBrowserViewModel: Bucket = {SelectedBucket}, Objects = {Objects.Count}, UploadPercent = {UploadPercent}")] public sealed class StorageBrowserViewModel : ObservableObject { /// The value of when the upload is complete. diff --git a/src/examples/Documentation/Common/CloudStorage/StorageConnection.cs b/src/examples/Documentation/Common/CloudStorage/StorageConnection.cs index 96452652..9ff166cf 100644 --- a/src/examples/Documentation/Common/CloudStorage/StorageConnection.cs +++ b/src/examples/Documentation/Common/CloudStorage/StorageConnection.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.CloudStorage; /// event, in the style of many older libraries. It does not implement /// INotifyPropertyChanged. /// -[System.Diagnostics.DebuggerDisplay("{Endpoint}: {State}")] +[System.Diagnostics.DebuggerDisplay("StorageConnection: {Endpoint}: {State}")] public sealed class StorageConnection { /// Occurs after changes. diff --git a/src/examples/Documentation/Common/CloudStorage/StorageException.cs b/src/examples/Documentation/Common/CloudStorage/StorageException.cs index ecbc7062..296c715f 100644 --- a/src/examples/Documentation/Common/CloudStorage/StorageException.cs +++ b/src/examples/Documentation/Common/CloudStorage/StorageException.cs @@ -5,7 +5,7 @@ namespace ReactiveUI.Binding.Documentation.CloudStorage; /// Reports that the storage service refused a request. -[System.Diagnostics.DebuggerDisplay("Failure = {Failure}, Message = {Message}")] +[System.Diagnostics.DebuggerDisplay("StorageException: Failure = {Failure}, Message = {Message}")] public sealed class StorageException : Exception { /// Initializes a new instance of the class. diff --git a/src/examples/Documentation/Common/CloudStorage/StorageObject.cs b/src/examples/Documentation/Common/CloudStorage/StorageObject.cs index 593c7bb8..84ffd990 100644 --- a/src/examples/Documentation/Common/CloudStorage/StorageObject.cs +++ b/src/examples/Documentation/Common/CloudStorage/StorageObject.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.CloudStorage; /// implement INotifyPropertyChanged and raises no event when a property changes, so nothing tells an observer /// that a property changed. /// -[System.Diagnostics.DebuggerDisplay("{Key} ({Size} bytes)")] +[System.Diagnostics.DebuggerDisplay("StorageObject: {Key} ({Size} bytes)")] public sealed class StorageObject { /// Gets or sets the full name of the object inside its bucket, such as photos/2026/launch.png. diff --git a/src/examples/Documentation/Common/CloudStorage/UploadProgress.cs b/src/examples/Documentation/Common/CloudStorage/UploadProgress.cs index 2c4a7478..763406e7 100644 --- a/src/examples/Documentation/Common/CloudStorage/UploadProgress.cs +++ b/src/examples/Documentation/Common/CloudStorage/UploadProgress.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.CloudStorage; /// A report on how much of an upload the service has received. /// The number of bytes the service has received. /// The size of the whole upload in bytes. -[System.Diagnostics.DebuggerDisplay("{BytesSent} of {TotalBytes}")] +[System.Diagnostics.DebuggerDisplay("UploadProgress: {BytesSent} of {TotalBytes}")] public sealed record UploadProgress(long BytesSent, long TotalBytes) { /// Gets how much has been received as a fraction from 0 to 1. diff --git a/src/examples/Documentation/Common/CloudStorage/UploadRequest.cs b/src/examples/Documentation/Common/CloudStorage/UploadRequest.cs index db928f0d..61d593c6 100644 --- a/src/examples/Documentation/Common/CloudStorage/UploadRequest.cs +++ b/src/examples/Documentation/Common/CloudStorage/UploadRequest.cs @@ -8,5 +8,5 @@ namespace ReactiveUI.Binding.Documentation.CloudStorage; /// The name of the file, without a folder. /// The size of the file in bytes. /// The media type of the file. -[System.Diagnostics.DebuggerDisplay("{FileName} ({SizeBytes} bytes)")] +[System.Diagnostics.DebuggerDisplay("UploadRequest: {FileName} ({SizeBytes} bytes)")] public sealed record UploadRequest(string FileName, long SizeBytes, string ContentType); diff --git a/src/examples/Documentation/Common/Education/Assignment.cs b/src/examples/Documentation/Common/Education/Assignment.cs index 7bc4733a..702af4d9 100644 --- a/src/examples/Documentation/Common/Education/Assignment.cs +++ b/src/examples/Documentation/Common/Education/Assignment.cs @@ -11,5 +11,5 @@ namespace ReactiveUI.Binding.Documentation.Education; /// How much the assignment counts towards the course, as a percentage. /// The highest score the assignment awards. /// The last day a student can submit without being late. -[System.Diagnostics.DebuggerDisplay("{Title} ({Weight}%)")] +[System.Diagnostics.DebuggerDisplay("Assignment: {Title} ({Weight}%)")] public sealed record Assignment(int Id, string CourseCode, string Title, decimal Weight, decimal MaxScore, DateOnly DueDate); diff --git a/src/examples/Documentation/Common/Education/Course.cs b/src/examples/Documentation/Common/Education/Course.cs index fb2cf9f7..04a5402f 100644 --- a/src/examples/Documentation/Common/Education/Course.cs +++ b/src/examples/Documentation/Common/Education/Course.cs @@ -12,7 +12,7 @@ namespace ReactiveUI.Binding.Documentation.Education; /// The hour the class starts, from 0 to 23. /// How many hours the class lasts. /// The weighted average, as a percentage, a student needs to pass. -[System.Diagnostics.DebuggerDisplay("{Code}: {Title}")] +[System.Diagnostics.DebuggerDisplay("Course: {Code}: {Title}")] public sealed record Course(string Code, string Title, int Capacity, DayOfWeek Day, int StartHour, int DurationHours, decimal PassMark) { /// Checks whether this course meets at the same time as another. diff --git a/src/examples/Documentation/Common/Education/DropRequest.cs b/src/examples/Documentation/Common/Education/DropRequest.cs index 416fb5fe..9c6604c8 100644 --- a/src/examples/Documentation/Common/Education/DropRequest.cs +++ b/src/examples/Documentation/Common/Education/DropRequest.cs @@ -7,5 +7,5 @@ namespace ReactiveUI.Binding.Documentation.Education; /// The question the gradebook asks before it takes a student out of a course. /// The student who would be dropped. /// The course the student would leave. -[System.Diagnostics.DebuggerDisplay("Drop {Student} from {Course}")] +[System.Diagnostics.DebuggerDisplay("DropRequest: Drop {Student} from {Course}")] public sealed record DropRequest(Student Student, Course Course); diff --git a/src/examples/Documentation/Common/Education/Enrolment.cs b/src/examples/Documentation/Common/Education/Enrolment.cs index 4d75790a..4e6d2681 100644 --- a/src/examples/Documentation/Common/Education/Enrolment.cs +++ b/src/examples/Documentation/Common/Education/Enrolment.cs @@ -10,5 +10,5 @@ namespace ReactiveUI.Binding.Documentation.Education; /// The day the student took the place. /// The scores recorded so far. /// The assignments the student handed in. -[System.Diagnostics.DebuggerDisplay("Student {StudentId} in {CourseCode}")] +[System.Diagnostics.DebuggerDisplay("Enrolment: Student {StudentId} in {CourseCode}")] public sealed record Enrolment(int StudentId, string CourseCode, DateOnly EnrolledOn, IReadOnlyList Grades, IReadOnlyList Submissions); diff --git a/src/examples/Documentation/Common/Education/Grade.cs b/src/examples/Documentation/Common/Education/Grade.cs index 236e28c9..e6d23f44 100644 --- a/src/examples/Documentation/Common/Education/Grade.cs +++ b/src/examples/Documentation/Common/Education/Grade.cs @@ -9,5 +9,5 @@ namespace ReactiveUI.Binding.Documentation.Education; /// The identifier of the assignment. /// The score awarded, from 0 to the assignment's maximum. /// When the teacher recorded the score. -[System.Diagnostics.DebuggerDisplay("Assignment {AssignmentId}: {Score}")] +[System.Diagnostics.DebuggerDisplay("Grade: Assignment {AssignmentId}: {Score}")] public sealed record Grade(int StudentId, int AssignmentId, decimal Score, DateTimeOffset RecordedOn); diff --git a/src/examples/Documentation/Common/Education/GradebookView.cs b/src/examples/Documentation/Common/Education/GradebookView.cs index 2533d775..e7a95369 100644 --- a/src/examples/Documentation/Common/Education/GradebookView.cs +++ b/src/examples/Documentation/Common/Education/GradebookView.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.Education; /// The gradebook screen: a course list, the roster of the selected course, the assignments and a grade entry /// area. A MAUI page builds these controls from markup; here the view creates them in code. /// -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("GradebookView: ViewModel = {ViewModel}")] public sealed class GradebookView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Common/Education/GradebookViewModel.cs b/src/examples/Documentation/Common/Education/GradebookViewModel.cs index 571b5b5a..57b1c2dd 100644 --- a/src/examples/Documentation/Common/Education/GradebookViewModel.cs +++ b/src/examples/Documentation/Common/Education/GradebookViewModel.cs @@ -13,7 +13,7 @@ namespace ReactiveUI.Binding.Documentation.Education; /// methods and returns; call the method itself to wait for the work. A refused request never throws. It sets /// . /// -[System.Diagnostics.DebuggerDisplay("Course = {SelectedCourse}, Student = {SelectedStudent}, Average = {Average}")] +[System.Diagnostics.DebuggerDisplay("GradebookViewModel: Course = {SelectedCourse}, Student = {SelectedStudent}, Average = {Average}")] public sealed class GradebookViewModel : ObservableObject { /// The service the view model calls. diff --git a/src/examples/Documentation/Common/Education/InMemoryStudentRecords.cs b/src/examples/Documentation/Common/Education/InMemoryStudentRecords.cs index 2086a066..92fe844b 100644 --- a/src/examples/Documentation/Common/Education/InMemoryStudentRecords.cs +++ b/src/examples/Documentation/Common/Education/InMemoryStudentRecords.cs @@ -10,7 +10,7 @@ namespace ReactiveUI.Binding.Documentation.Education; /// sets how long each response takes. It hands out copies, so changing a student you read /// does not change the records. /// -[System.Diagnostics.DebuggerDisplay("Students = {_students.Count}, Enrolments = {_enrolments.Count}, IsUnavailable = {IsUnavailable}")] +[System.Diagnostics.DebuggerDisplay("InMemoryStudentRecords: Students = {_students.Count}, Enrolments = {_enrolments.Count}, IsUnavailable = {IsUnavailable}")] public sealed class InMemoryStudentRecords : IStudentRecords { /// The courses a new service starts with. CS101 has three places, and HIST110 meets while CS101 does. diff --git a/src/examples/Documentation/Common/Education/Student.cs b/src/examples/Documentation/Common/Education/Student.cs index 127a5b19..bfadb1ec 100644 --- a/src/examples/Documentation/Common/Education/Student.cs +++ b/src/examples/Documentation/Common/Education/Student.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Education; /// A student. Each property raises PropertyChanged, and is replaced whenever the records change. -[System.Diagnostics.DebuggerDisplay("{Id}: {Name}")] +[System.Diagnostics.DebuggerDisplay("Student: {Id}: {Name}")] public sealed class Student : ObservableObject { /// Gets or sets the identifier of the student. diff --git a/src/examples/Documentation/Common/Education/StudentRecordsException.cs b/src/examples/Documentation/Common/Education/StudentRecordsException.cs index 7ec60757..07b260f7 100644 --- a/src/examples/Documentation/Common/Education/StudentRecordsException.cs +++ b/src/examples/Documentation/Common/Education/StudentRecordsException.cs @@ -5,7 +5,7 @@ namespace ReactiveUI.Binding.Documentation.Education; /// Reports that the student records service refused a request. -[System.Diagnostics.DebuggerDisplay("Failure = {Failure}, Message = {Message}")] +[System.Diagnostics.DebuggerDisplay("StudentRecordsException: Failure = {Failure}, Message = {Message}")] public sealed class StudentRecordsException : Exception { /// Initializes a new instance of the class. diff --git a/src/examples/Documentation/Common/Education/Submission.cs b/src/examples/Documentation/Common/Education/Submission.cs index 5445917d..529d2100 100644 --- a/src/examples/Documentation/Common/Education/Submission.cs +++ b/src/examples/Documentation/Common/Education/Submission.cs @@ -9,5 +9,5 @@ namespace ReactiveUI.Binding.Documentation.Education; /// The identifier of the assignment. /// When the student handed the work in. /// Whether the student handed the work in after the due date. -[System.Diagnostics.DebuggerDisplay("Assignment {AssignmentId}, late = {IsLate}")] +[System.Diagnostics.DebuggerDisplay("Submission: Assignment {AssignmentId}, late = {IsLate}")] public sealed record Submission(int StudentId, int AssignmentId, DateTimeOffset SubmittedAt, bool IsLate); diff --git a/src/examples/Documentation/Common/GitHub/GitHubApiException.cs b/src/examples/Documentation/Common/GitHub/GitHubApiException.cs index 68b22643..136a2f8f 100644 --- a/src/examples/Documentation/Common/GitHub/GitHubApiException.cs +++ b/src/examples/Documentation/Common/GitHub/GitHubApiException.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.GitHub; /// Reports that the server answered a request with an error status. -[System.Diagnostics.DebuggerDisplay("StatusCode = {StatusCode}, Message = {Message}")] +[System.Diagnostics.DebuggerDisplay("GitHubApiException: StatusCode = {StatusCode}, Message = {Message}")] public sealed class GitHubApiException : Exception { /// Initializes a new instance of the class. diff --git a/src/examples/Documentation/Common/GitHub/InMemoryGitHubServer.cs b/src/examples/Documentation/Common/GitHub/InMemoryGitHubServer.cs index d7eff0f9..b7af4048 100644 --- a/src/examples/Documentation/Common/GitHub/InMemoryGitHubServer.cs +++ b/src/examples/Documentation/Common/GitHub/InMemoryGitHubServer.cs @@ -13,7 +13,7 @@ namespace ReactiveUI.Binding.Documentation.GitHub; /// minute per change, so the data never depends on the wall clock. Set to delay each /// response. /// -[System.Diagnostics.DebuggerDisplay("RateLimitRemaining = {RateLimitRemaining}")] +[System.Diagnostics.DebuggerDisplay("InMemoryGitHubServer: RateLimitRemaining = {RateLimitRemaining}")] public sealed class InMemoryGitHubServer : IGitHubApi { /// The number the first issue of each repository receives. diff --git a/src/examples/Documentation/Common/GitHub/Issue.cs b/src/examples/Documentation/Common/GitHub/Issue.cs index 2b802cd0..2fe2c853 100644 --- a/src/examples/Documentation/Common/GitHub/Issue.cs +++ b/src/examples/Documentation/Common/GitHub/Issue.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.GitHub; /// A reported problem or request. Each property raises PropertyChanged. -[System.Diagnostics.DebuggerDisplay("#{Number} {Title} ({State})")] +[System.Diagnostics.DebuggerDisplay("Issue: #{Number} {Title} ({State})")] public sealed class Issue : ObservableObject { /// Gets or sets the number the repository gave the issue. diff --git a/src/examples/Documentation/Common/GitHub/IssueBoardView.cs b/src/examples/Documentation/Common/GitHub/IssueBoardView.cs index 62335433..eb4c2172 100644 --- a/src/examples/Documentation/Common/GitHub/IssueBoardView.cs +++ b/src/examples/Documentation/Common/GitHub/IssueBoardView.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.GitHub; /// The issue board screen: a sign-in strip, a repository list, an issue list and a detail area for the selected /// issue. The view creates its MAUI controls in code; a real page builds them from markup. /// -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("IssueBoardView: ViewModel = {ViewModel}")] public sealed class IssueBoardView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Common/GitHub/IssueBoardViewModel.cs b/src/examples/Documentation/Common/GitHub/IssueBoardViewModel.cs index 4624d9c2..45b76578 100644 --- a/src/examples/Documentation/Common/GitHub/IssueBoardViewModel.cs +++ b/src/examples/Documentation/Common/GitHub/IssueBoardViewModel.cs @@ -15,7 +15,7 @@ namespace ReactiveUI.Binding.Documentation.GitHub; /// method to wait for the work. A failed request never throws from those methods. It sets /// , and a 401 signs the user out. /// -[System.Diagnostics.DebuggerDisplay("IsSignedIn = {IsSignedIn}, Issues = {Issues.Count}")] +[System.Diagnostics.DebuggerDisplay("IssueBoardViewModel: IsSignedIn = {IsSignedIn}, Issues = {Issues.Count}")] public sealed class IssueBoardViewModel : ObservableObject { /// The server the view model calls. diff --git a/src/examples/Documentation/Common/GitHub/IssueComment.cs b/src/examples/Documentation/Common/GitHub/IssueComment.cs index bfa94675..5499f5f3 100644 --- a/src/examples/Documentation/Common/GitHub/IssueComment.cs +++ b/src/examples/Documentation/Common/GitHub/IssueComment.cs @@ -8,5 +8,5 @@ namespace ReactiveUI.Binding.Documentation.GitHub; /// The account name of the person who wrote the comment. /// The text of the comment. /// When the comment was written. -[System.Diagnostics.DebuggerDisplay("{Author}: {Body}")] +[System.Diagnostics.DebuggerDisplay("IssueComment: {Author}: {Body}")] public sealed record IssueComment(string Author, string Body, DateTimeOffset CreatedAt); diff --git a/src/examples/Documentation/Common/GitHub/Repository.cs b/src/examples/Documentation/Common/GitHub/Repository.cs index 6868c31b..f9b1b087 100644 --- a/src/examples/Documentation/Common/GitHub/Repository.cs +++ b/src/examples/Documentation/Common/GitHub/Repository.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.GitHub; /// The name of the repository. /// What the repository is for. /// How many issues are open when the server reads the repository. -[System.Diagnostics.DebuggerDisplay("{FullName}")] +[System.Diagnostics.DebuggerDisplay("Repository: {FullName}")] public sealed record Repository(string Owner, string Name, string Description, int OpenIssueCount) { /// Gets the name that identifies the repository to the server, such as acme/webshop. diff --git a/src/examples/Documentation/Common/GitHub/User.cs b/src/examples/Documentation/Common/GitHub/User.cs index c90af5c8..c52267b5 100644 --- a/src/examples/Documentation/Common/GitHub/User.cs +++ b/src/examples/Documentation/Common/GitHub/User.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.GitHub; /// A person with an account on the server. Each property raises PropertyChanged. -[System.Diagnostics.DebuggerDisplay("{Login}")] +[System.Diagnostics.DebuggerDisplay("User: {Login}")] public sealed class User : ObservableObject { /// Gets or sets the account name, such as priya-nair. diff --git a/src/examples/Documentation/Common/Todo/InMemoryTodoStore.cs b/src/examples/Documentation/Common/Todo/InMemoryTodoStore.cs index 2416e033..ee89afd2 100644 --- a/src/examples/Documentation/Common/Todo/InMemoryTodoStore.cs +++ b/src/examples/Documentation/Common/Todo/InMemoryTodoStore.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Todo; /// A to-do database that lives in memory. It keeps its own rows and hands out copies, so changing an item you /// read does not change the database until you call . /// -[System.Diagnostics.DebuggerDisplay("Rows = {RowCount}, IsOffline = {IsOffline}")] +[System.Diagnostics.DebuggerDisplay("InMemoryTodoStore: Rows = {RowCount}, IsOffline = {IsOffline}")] public sealed class InMemoryTodoStore : ITodoStore { /// The message of the exception thrown while the database is offline. diff --git a/src/examples/Documentation/Common/Todo/TodoItem.cs b/src/examples/Documentation/Common/Todo/TodoItem.cs index 418211d5..d2aa6b34 100644 --- a/src/examples/Documentation/Common/Todo/TodoItem.cs +++ b/src/examples/Documentation/Common/Todo/TodoItem.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Todo; /// One task on the to-do list. Each property raises PropertyChanged. -[System.Diagnostics.DebuggerDisplay("{Id}: {Title}, IsDone = {IsDone}")] +[System.Diagnostics.DebuggerDisplay("TodoItem: {Id}: {Title}, IsDone = {IsDone}")] public sealed class TodoItem : ObservableObject { /// Gets or sets the identifier the store assigned; zero until the item is stored. diff --git a/src/examples/Documentation/Common/Todo/TodoListViewModel.cs b/src/examples/Documentation/Common/Todo/TodoListViewModel.cs index 2ce786aa..a07ae981 100644 --- a/src/examples/Documentation/Common/Todo/TodoListViewModel.cs +++ b/src/examples/Documentation/Common/Todo/TodoListViewModel.cs @@ -13,7 +13,7 @@ namespace ReactiveUI.Binding.Documentation.Todo; /// and keeps a count of the items still to do. Each command starts the matching method and returns; await the /// method itself to wait for its work. /// -[System.Diagnostics.DebuggerDisplay("Items = {Items.Count}, RemainingCount = {RemainingCount}")] +[System.Diagnostics.DebuggerDisplay("TodoListViewModel: Items = {Items.Count}, RemainingCount = {RemainingCount}")] public sealed class TodoListViewModel : ObservableObject { /// The database the view model reads and writes. diff --git a/src/examples/Documentation/Common/Todo/TodoView.cs b/src/examples/Documentation/Common/Todo/TodoView.cs index c200910e..f53cea32 100644 --- a/src/examples/Documentation/Common/Todo/TodoView.cs +++ b/src/examples/Documentation/Common/Todo/TodoView.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.Todo; /// The to-do screen: a list with a title box to add items and a detail area for the selected item. A real UI /// framework builds these controls from markup; here the view creates them in code. /// -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("TodoView: ViewModel = {ViewModel}")] public sealed class TodoView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/bindings/AccountNameView.cs b/src/examples/Documentation/Pages/bindings/AccountNameView.cs index 8e265909..0f10a691 100644 --- a/src/examples/Documentation/Pages/bindings/AccountNameView.cs +++ b/src/examples/Documentation/Pages/bindings/AccountNameView.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// The account detail strip: the name of the selected account in a box the customer could type into. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("AccountNameView: ViewModel = {ViewModel}")] public sealed class AccountNameView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/bindings/AuditedInteraction.cs b/src/examples/Documentation/Pages/bindings/AuditedInteraction.cs index a36a0456..c07712f4 100644 --- a/src/examples/Documentation/Pages/bindings/AuditedInteraction.cs +++ b/src/examples/Documentation/Pages/bindings/AuditedInteraction.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// An interaction that writes each question and answer to the console, as a bank keeps an audit trail of an approval. /// The type of the interaction's input. /// The type of the interaction's output. -[System.Diagnostics.DebuggerDisplay("Audited interaction")] +[System.Diagnostics.DebuggerDisplay("AuditedInteraction: Audited interaction")] public sealed class AuditedInteraction : Interaction { /// diff --git a/src/examples/Documentation/Pages/bindings/AuditingOutputContext.cs b/src/examples/Documentation/Pages/bindings/AuditingOutputContext.cs index f8378765..1ad0250d 100644 --- a/src/examples/Documentation/Pages/bindings/AuditingOutputContext.cs +++ b/src/examples/Documentation/Pages/bindings/AuditingOutputContext.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// The type of the interaction's input. /// The type of the interaction's output. /// The context that holds the input and the answer. -[System.Diagnostics.DebuggerDisplay("Input = {Input}, IsHandled = {IsHandled}")] +[System.Diagnostics.DebuggerDisplay("AuditingOutputContext: Input = {Input}, IsHandled = {IsHandled}")] public sealed class AuditingOutputContext(IOutputContext inner) : IOutputContext { /// diff --git a/src/examples/Documentation/Pages/bindings/CurrencyTextConverter.cs b/src/examples/Documentation/Pages/bindings/CurrencyTextConverter.cs index f64c1794..acc0356d 100644 --- a/src/examples/Documentation/Pages/bindings/CurrencyTextConverter.cs +++ b/src/examples/Documentation/Pages/bindings/CurrencyTextConverter.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// Shows an amount of money as text with a dollar sign. The conversion hint is the number format; without one the /// converter uses two decimal places. /// -[System.Diagnostics.DebuggerDisplay("Currency text converter")] +[System.Diagnostics.DebuggerDisplay("CurrencyTextConverter: Currency text converter")] public sealed class CurrencyTextConverter : BindingTypeConverter { /// The affinity that outranks the converters the library registers. diff --git a/src/examples/Documentation/Pages/bindings/IssueTriageView.cs b/src/examples/Documentation/Pages/bindings/IssueTriageView.cs index 85825e96..f35bddf8 100644 --- a/src/examples/Documentation/Pages/bindings/IssueTriageView.cs +++ b/src/examples/Documentation/Pages/bindings/IssueTriageView.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// The triage panel. It shows the confirmation dialog that appears before an issue closes. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("IssueTriageView: ViewModel = {ViewModel}")] public sealed class IssueTriageView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/bindings/IssueTriageViewModel.cs b/src/examples/Documentation/Pages/bindings/IssueTriageViewModel.cs index f2d8c8aa..b95eb82b 100644 --- a/src/examples/Documentation/Pages/bindings/IssueTriageViewModel.cs +++ b/src/examples/Documentation/Pages/bindings/IssueTriageViewModel.cs @@ -12,7 +12,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// view, which registers a handler against it. /// /// The issue board the panel triages. -[System.Diagnostics.DebuggerDisplay("Board = {Board}")] +[System.Diagnostics.DebuggerDisplay("IssueTriageViewModel: Board = {Board}")] public sealed class IssueTriageViewModel(IssueBoardViewModel board) : ObservableObject { /// Gets the issue board the panel triages. diff --git a/src/examples/Documentation/Pages/bindings/LoggingBindingHook.cs b/src/examples/Documentation/Pages/bindings/LoggingBindingHook.cs index 53811f60..79dc7d98 100644 --- a/src/examples/Documentation/Pages/bindings/LoggingBindingHook.cs +++ b/src/examples/Documentation/Pages/bindings/LoggingBindingHook.cs @@ -6,7 +6,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// Writes down every binding that is created and lets each one through. /// The name that starts each line the hook writes. -[System.Diagnostics.DebuggerDisplay("Logging binding hook")] +[System.Diagnostics.DebuggerDisplay("LoggingBindingHook: Logging binding hook")] public sealed class LoggingBindingHook(string name) : IPropertyBindingHook { /// diff --git a/src/examples/Documentation/Pages/bindings/PriorityColourConverter.cs b/src/examples/Documentation/Pages/bindings/PriorityColourConverter.cs index 79a4a249..e32717e8 100644 --- a/src/examples/Documentation/Pages/bindings/PriorityColourConverter.cs +++ b/src/examples/Documentation/Pages/bindings/PriorityColourConverter.cs @@ -12,7 +12,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// Turns the priority of a to-do item into the colour of its badge. The conversion hint "dark" picks the /// palette for a dark theme; any other hint, or none, picks the light palette. /// -[System.Diagnostics.DebuggerDisplay("Priority colour converter")] +[System.Diagnostics.DebuggerDisplay("PriorityColourConverter: Priority colour converter")] public sealed class PriorityColourConverter : BindingTypeConverter { /// The hint that asks for the dark palette. diff --git a/src/examples/Documentation/Pages/bindings/ReadOnlyAccountHook.cs b/src/examples/Documentation/Pages/bindings/ReadOnlyAccountHook.cs index f5961065..a345cd2b 100644 --- a/src/examples/Documentation/Pages/bindings/ReadOnlyAccountHook.cs +++ b/src/examples/Documentation/Pages/bindings/ReadOnlyAccountHook.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// Refuses every two-way binding on the accounts screen, so a view can show an account but never write to it. -[System.Diagnostics.DebuggerDisplay("Read-only account hook")] +[System.Diagnostics.DebuggerDisplay("ReadOnlyAccountHook: Read-only account hook")] public sealed class ReadOnlyAccountHook : IPropertyBindingHook { /// diff --git a/src/examples/Documentation/Pages/bindings/StatementExportView.cs b/src/examples/Documentation/Pages/bindings/StatementExportView.cs index debfebcc..6c1b8bec 100644 --- a/src/examples/Documentation/Pages/bindings/StatementExportView.cs +++ b/src/examples/Documentation/Pages/bindings/StatementExportView.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// The statement export dialog: a single button that exports the chosen statement. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("StatementExportView: ViewModel = {ViewModel}")] public sealed class StatementExportView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/bindings/StatementExportViewModel.cs b/src/examples/Documentation/Pages/bindings/StatementExportViewModel.cs index 9f23b8b4..684d3fe0 100644 --- a/src/examples/Documentation/Pages/bindings/StatementExportViewModel.cs +++ b/src/examples/Documentation/Pages/bindings/StatementExportViewModel.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// The dialog that exports an account statement. The export runs only while a statement is chosen. -[System.Diagnostics.DebuggerDisplay("ExportCount = {ExportCount}")] +[System.Diagnostics.DebuggerDisplay("StatementExportViewModel: ExportCount = {ExportCount}")] public sealed class StatementExportViewModel : ObservableObject { /// Initializes a new instance of the class. diff --git a/src/examples/Documentation/Pages/bindings/StatementReferenceView.cs b/src/examples/Documentation/Pages/bindings/StatementReferenceView.cs index 942daeed..18c2c4a0 100644 --- a/src/examples/Documentation/Pages/bindings/StatementReferenceView.cs +++ b/src/examples/Documentation/Pages/bindings/StatementReferenceView.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// A form field for the reference on the payee's statement. The bank prints at most 18 characters, so the field refuses longer text. -[System.Diagnostics.DebuggerDisplay("Reference = {Reference}")] +[System.Diagnostics.DebuggerDisplay("StatementReferenceView: Reference = {Reference}")] public sealed class StatementReferenceView : ObservableObject { /// The number of characters the bank prints for a reference. diff --git a/src/examples/Documentation/Pages/bindings/TodoHeadingView.cs b/src/examples/Documentation/Pages/bindings/TodoHeadingView.cs index 70793839..6c4fa848 100644 --- a/src/examples/Documentation/Pages/bindings/TodoHeadingView.cs +++ b/src/examples/Documentation/Pages/bindings/TodoHeadingView.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// The heading of the to-do screen. Its label is a named control, declared as a field in the part the markup /// compiler generates (TodoHeadingView.g.cs), the way x:Name="TitleLabel" declares one. /// -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("TodoHeadingView: ViewModel = {ViewModel}")] public sealed partial class TodoHeadingView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/bindings/TodoItemBadgeView.cs b/src/examples/Documentation/Pages/bindings/TodoItemBadgeView.cs index b67f6862..abc39d19 100644 --- a/src/examples/Documentation/Pages/bindings/TodoItemBadgeView.cs +++ b/src/examples/Documentation/Pages/bindings/TodoItemBadgeView.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// The row of one to-do item in a list: a badge that shows how urgent the item is. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("TodoItemBadgeView: ViewModel = {ViewModel}")] public sealed class TodoItemBadgeView : ObservableObject, IViewFor { /// Gets or sets the item the row shows. diff --git a/src/examples/Documentation/Pages/bindings/TodoTagFilterView.cs b/src/examples/Documentation/Pages/bindings/TodoTagFilterView.cs index 9cf207e2..0c6a57cd 100644 --- a/src/examples/Documentation/Pages/bindings/TodoTagFilterView.cs +++ b/src/examples/Documentation/Pages/bindings/TodoTagFilterView.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// A picker that narrows the to-do list to one tag. The picker holds its selection as an object. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("TodoTagFilterView: ViewModel = {ViewModel}")] public sealed class TodoTagFilterView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/bindings/UploadPanelView.cs b/src/examples/Documentation/Pages/bindings/UploadPanelView.cs index ee50523b..7a050982 100644 --- a/src/examples/Documentation/Pages/bindings/UploadPanelView.cs +++ b/src/examples/Documentation/Pages/bindings/UploadPanelView.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// The upload dialog: a single button that uploads the file the user picked. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("UploadPanelView: ViewModel = {ViewModel}")] public sealed class UploadPanelView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/bindings/UploadPanelViewModel.cs b/src/examples/Documentation/Pages/bindings/UploadPanelViewModel.cs index d19d7031..7f2192c6 100644 --- a/src/examples/Documentation/Pages/bindings/UploadPanelViewModel.cs +++ b/src/examples/Documentation/Pages/bindings/UploadPanelViewModel.cs @@ -13,7 +13,7 @@ namespace ReactiveUI.Binding.Documentation.Bindings; /// browser's upload command as its parameter. /// /// The storage browser the dialog uploads through. -[System.Diagnostics.DebuggerDisplay("PendingUpload = {PendingUpload}")] +[System.Diagnostics.DebuggerDisplay("UploadPanelViewModel: PendingUpload = {PendingUpload}")] public sealed class UploadPanelViewModel(StorageBrowserViewModel browser) : ObservableObject { /// Gets the command that uploads the picked file; it is the upload command of the browser. diff --git a/src/examples/Documentation/Pages/custom-converters/AccountSummaryView.cs b/src/examples/Documentation/Pages/custom-converters/AccountSummaryView.cs index d45a8570..5ad10dc7 100644 --- a/src/examples/Documentation/Pages/custom-converters/AccountSummaryView.cs +++ b/src/examples/Documentation/Pages/custom-converters/AccountSummaryView.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Converters; /// A one-line summary of an account, shown as a row of the accounts list. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("AccountSummaryView: ViewModel = {ViewModel}")] public sealed class AccountSummaryView : ObservableObject, IViewFor { /// Gets or sets the account the row shows. diff --git a/src/examples/Documentation/Pages/custom-converters/AccountsToViewsConverter.cs b/src/examples/Documentation/Pages/custom-converters/AccountsToViewsConverter.cs index 1cb7af8e..44704e3b 100644 --- a/src/examples/Documentation/Pages/custom-converters/AccountsToViewsConverter.cs +++ b/src/examples/Documentation/Pages/custom-converters/AccountsToViewsConverter.cs @@ -10,7 +10,7 @@ namespace ReactiveUI.Binding.Documentation.Converters; /// Turns a list of accounts into a list of views, one for each account, by asking a view locator. /// The locator that finds the view of an account. -[System.Diagnostics.DebuggerDisplay("accounts -> views")] +[System.Diagnostics.DebuggerDisplay("AccountsToViewsConverter: accounts -> views")] public sealed class AccountsToViewsConverter(IViewLocator locator) : BindingTypeConverter, IEnumerable> { /// The affinity of the converter for its type pair. diff --git a/src/examples/Documentation/Pages/custom-converters/CurrencyTextConverter.cs b/src/examples/Documentation/Pages/custom-converters/CurrencyTextConverter.cs index 5b0b566f..63e201dd 100644 --- a/src/examples/Documentation/Pages/custom-converters/CurrencyTextConverter.cs +++ b/src/examples/Documentation/Pages/custom-converters/CurrencyTextConverter.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Converters; /// Converts a banking amount to text with a currency symbol in front. -[DebuggerDisplay("decimal -> currency text")] +[DebuggerDisplay("CurrencyTextConverter: decimal -> currency text")] public sealed class CurrencyTextConverter : BindingTypeConverter { /// The affinity of the converter for its type pair. diff --git a/src/examples/Documentation/Pages/custom-converters/CustomBoolToStringConverter.cs b/src/examples/Documentation/Pages/custom-converters/CustomBoolToStringConverter.cs index 0f84313f..4d517010 100644 --- a/src/examples/Documentation/Pages/custom-converters/CustomBoolToStringConverter.cs +++ b/src/examples/Documentation/Pages/custom-converters/CustomBoolToStringConverter.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Converters; /// Custom bool-to-string converter that uses different labels than the default. -[DebuggerDisplay("bool -> string (custom labels)")] +[DebuggerDisplay("CustomBoolToStringConverter: bool -> string (custom labels)")] public sealed class CustomBoolToStringConverter : BindingTypeConverter { /// The affinity score to prioritize this converter over built-in ones. diff --git a/src/examples/Documentation/Pages/custom-converters/DemoIntToStringConverter.cs b/src/examples/Documentation/Pages/custom-converters/DemoIntToStringConverter.cs index 02269279..76f166f1 100644 --- a/src/examples/Documentation/Pages/custom-converters/DemoIntToStringConverter.cs +++ b/src/examples/Documentation/Pages/custom-converters/DemoIntToStringConverter.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Converters; /// Demo converter from int to string with adjustable affinity. -[DebuggerDisplay("int -> string (affinity {_affinity})")] +[DebuggerDisplay("DemoIntToStringConverter: int -> string (affinity {_affinity})")] public sealed class DemoIntToStringConverter : IBindingTypeConverter { /// The affinity score for this converter. diff --git a/src/examples/Documentation/Pages/custom-converters/LegacyObjectToStringFallbackConverter.cs b/src/examples/Documentation/Pages/custom-converters/LegacyObjectToStringFallbackConverter.cs index 5a905183..9f3bc169 100644 --- a/src/examples/Documentation/Pages/custom-converters/LegacyObjectToStringFallbackConverter.cs +++ b/src/examples/Documentation/Pages/custom-converters/LegacyObjectToStringFallbackConverter.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Converters; /// The fallback converter an older to-do app registered with Splat. It shows any value as its text. -[DebuggerDisplay("object -> string fallback")] +[DebuggerDisplay("LegacyObjectToStringFallbackConverter: object -> string fallback")] public sealed class LegacyObjectToStringFallbackConverter : IBindingFallbackConverter { /// The affinity of a last resort fallback converter. diff --git a/src/examples/Documentation/Pages/custom-converters/LegacyPriorityToColorConverter.cs b/src/examples/Documentation/Pages/custom-converters/LegacyPriorityToColorConverter.cs index d02997f3..0f81f40b 100644 --- a/src/examples/Documentation/Pages/custom-converters/LegacyPriorityToColorConverter.cs +++ b/src/examples/Documentation/Pages/custom-converters/LegacyPriorityToColorConverter.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Converters; /// The priority badge colour converter an older to-do app registered with Splat. -[DebuggerDisplay("TodoPriority -> badge colour")] +[DebuggerDisplay("LegacyPriorityToColorConverter: TodoPriority -> badge colour")] public sealed class LegacyPriorityToColorConverter : BindingTypeConverter { /// The badge colour of a low priority item. diff --git a/src/examples/Documentation/Pages/custom-converters/LegacyTagListSetMethodConverter.cs b/src/examples/Documentation/Pages/custom-converters/LegacyTagListSetMethodConverter.cs index 8e67d542..b21d20cb 100644 --- a/src/examples/Documentation/Pages/custom-converters/LegacyTagListSetMethodConverter.cs +++ b/src/examples/Documentation/Pages/custom-converters/LegacyTagListSetMethodConverter.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Converters; /// The set-method converter an older to-do app registered with Splat. It fills a tag list instead of replacing it. -[DebuggerDisplay("tags -> List set method")] +[DebuggerDisplay("LegacyTagListSetMethodConverter: tags -> List set method")] public sealed class LegacyTagListSetMethodConverter : ISetMethodBindingConverter { /// The affinity the older app gave the converter. diff --git a/src/examples/Documentation/Pages/custom-converters/PriorityColourConverter.cs b/src/examples/Documentation/Pages/custom-converters/PriorityColourConverter.cs index 58f75409..21849fd9 100644 --- a/src/examples/Documentation/Pages/custom-converters/PriorityColourConverter.cs +++ b/src/examples/Documentation/Pages/custom-converters/PriorityColourConverter.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Converters; /// Converts a to-do priority to a colour name. It implements directly. -[System.Diagnostics.DebuggerDisplay("TodoPriority -> colour")] +[System.Diagnostics.DebuggerDisplay("PriorityColourConverter: TodoPriority -> colour")] public sealed class PriorityColourConverter : IBindingTypeConverter { /// The affinity of the converter for its type pair. diff --git a/src/examples/Documentation/Pages/custom-converters/PriorityMatchesHintConverter.cs b/src/examples/Documentation/Pages/custom-converters/PriorityMatchesHintConverter.cs index 360f2e16..2db43256 100644 --- a/src/examples/Documentation/Pages/custom-converters/PriorityMatchesHintConverter.cs +++ b/src/examples/Documentation/Pages/custom-converters/PriorityMatchesHintConverter.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Converters; /// Converts a priority to when it equals the priority passed as the conversion hint. -[System.Diagnostics.DebuggerDisplay("TodoPriority -> bool (equals the hint)")] +[System.Diagnostics.DebuggerDisplay("PriorityMatchesHintConverter: TodoPriority -> bool (equals the hint)")] public sealed class PriorityMatchesHintConverter : BindingTypeConverter { /// The affinity of the converter for its type pair. diff --git a/src/examples/Documentation/Pages/custom-converters/TagListToTextConverter.cs b/src/examples/Documentation/Pages/custom-converters/TagListToTextConverter.cs index 9b12957e..5406fbab 100644 --- a/src/examples/Documentation/Pages/custom-converters/TagListToTextConverter.cs +++ b/src/examples/Documentation/Pages/custom-converters/TagListToTextConverter.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Converters; /// Converts the tags of a to-do item to one line of text, with a comma between the tags. -[System.Diagnostics.DebuggerDisplay("tags -> text")] +[System.Diagnostics.DebuggerDisplay("TagListToTextConverter: tags -> text")] public sealed class TagListToTextConverter : BindingTypeConverter, string> { /// The affinity of the converter for its type pair. diff --git a/src/examples/Documentation/Pages/custom-converters/TextToTagListConverter.cs b/src/examples/Documentation/Pages/custom-converters/TextToTagListConverter.cs index d4fb0cfd..80429173 100644 --- a/src/examples/Documentation/Pages/custom-converters/TextToTagListConverter.cs +++ b/src/examples/Documentation/Pages/custom-converters/TextToTagListConverter.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Converters; /// Converts a line of comma separated text to the tags of a to-do item, dropping blank tags. -[System.Diagnostics.DebuggerDisplay("text -> tags")] +[System.Diagnostics.DebuggerDisplay("TextToTagListConverter: text -> tags")] public sealed class TextToTagListConverter : BindingTypeConverter> { /// The affinity of the converter for its type pair. diff --git a/src/examples/Documentation/Pages/mechanisms/DraftTodo.cs b/src/examples/Documentation/Pages/mechanisms/DraftTodo.cs index 077a5bbf..73ad8297 100644 --- a/src/examples/Documentation/Pages/mechanisms/DraftTodo.cs +++ b/src/examples/Documentation/Pages/mechanisms/DraftTodo.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Mechanisms; /// A to-do item being edited. It reports each change of its title and notes twice: before it is applied and after. -[System.Diagnostics.DebuggerDisplay("Title = {Title}")] +[System.Diagnostics.DebuggerDisplay("DraftTodo: Title = {Title}")] public sealed class DraftTodo : ObservableObject, System.ComponentModel.INotifyPropertyChanging { /// diff --git a/src/examples/Documentation/Pages/mechanisms/TodoPropertyObservableForProperty.cs b/src/examples/Documentation/Pages/mechanisms/TodoPropertyObservableForProperty.cs index f3ed6deb..6789fbc2 100644 --- a/src/examples/Documentation/Pages/mechanisms/TodoPropertyObservableForProperty.cs +++ b/src/examples/Documentation/Pages/mechanisms/TodoPropertyObservableForProperty.cs @@ -14,7 +14,7 @@ namespace ReactiveUI.Binding.Documentation.Mechanisms; /// /// The name of the property this provider bids for. /// The affinity this provider bids for that property. -[System.Diagnostics.DebuggerDisplay("{ObservedProperty}: Bid = {Bid}")] +[System.Diagnostics.DebuggerDisplay("TodoPropertyObservableForProperty: {ObservedProperty}: Bid = {Bid}")] public sealed class TodoPropertyObservableForProperty(string observedProperty, int bid) : ICreatesObservableForProperty { /// Observes properties the way an ordinary PropertyChanged type is observed. diff --git a/src/examples/Documentation/Pages/observing/IssueDraft.cs b/src/examples/Documentation/Pages/observing/IssueDraft.cs index 97183601..c7101191 100644 --- a/src/examples/Documentation/Pages/observing/IssueDraft.cs +++ b/src/examples/Documentation/Pages/observing/IssueDraft.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Observing; /// The edit form of an issue. It reports each change before and after it is applied. -[System.Diagnostics.DebuggerDisplay("#{Number} {Title} ({State})")] +[System.Diagnostics.DebuggerDisplay("IssueDraft: #{Number} {Title} ({State})")] public sealed class IssueDraft : ChangingObject { /// Gets or sets the number the repository gave the issue. diff --git a/src/examples/Documentation/Pages/observing/IssueSearchView.cs b/src/examples/Documentation/Pages/observing/IssueSearchView.cs index 07c193cc..1ac86827 100644 --- a/src/examples/Documentation/Pages/observing/IssueSearchView.cs +++ b/src/examples/Documentation/Pages/observing/IssueSearchView.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Observing; /// The issue search screen: a search box, a search button, a busy bar and the list of matches. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("IssueSearchView: ViewModel = {ViewModel}")] public sealed class IssueSearchView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/observing/IssueSearchViewModel.cs b/src/examples/Documentation/Pages/observing/IssueSearchViewModel.cs index 866f3737..ae4ad04a 100644 --- a/src/examples/Documentation/Pages/observing/IssueSearchViewModel.cs +++ b/src/examples/Documentation/Pages/observing/IssueSearchViewModel.cs @@ -15,7 +15,7 @@ namespace ReactiveUI.Binding.Documentation.Observing; /// /// The server to search. /// The repository whose open issues are searched, such as acme/webshop. -[System.Diagnostics.DebuggerDisplay("SearchTerm = {SearchTerm}, IsSearching = {IsSearching}, Results = {Results.Count}")] +[System.Diagnostics.DebuggerDisplay("IssueSearchViewModel: SearchTerm = {SearchTerm}, IsSearching = {IsSearching}, Results = {Results.Count}")] public sealed class IssueSearchViewModel(IGitHubApi api, string repository) : ObservableObject { /// Gets or sets the text the user has typed in the search box. diff --git a/src/examples/Documentation/Pages/observing/RepositoryChannels.cs b/src/examples/Documentation/Pages/observing/RepositoryChannels.cs index 51786958..2c340751 100644 --- a/src/examples/Documentation/Pages/observing/RepositoryChannels.cs +++ b/src/examples/Documentation/Pages/observing/RepositoryChannels.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.Observing; /// The live event streams of one repository, one stream per kind of activity. The server pushes an event onto the /// stream that matches it, and every subscriber of that stream hears it. /// -[System.Diagnostics.DebuggerDisplay("{Repository}")] +[System.Diagnostics.DebuggerDisplay("RepositoryChannels: {Repository}")] public sealed class RepositoryChannels : IDisposable { /// Every stream the repository owns. diff --git a/src/examples/Documentation/Pages/observing/TodoItemDraft.cs b/src/examples/Documentation/Pages/observing/TodoItemDraft.cs index 9bb9072d..e5fe77a5 100644 --- a/src/examples/Documentation/Pages/observing/TodoItemDraft.cs +++ b/src/examples/Documentation/Pages/observing/TodoItemDraft.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Observing; /// The edit form of a to-do item. It reports each change before and after it is applied. -[System.Diagnostics.DebuggerDisplay("Title = {Title}, IsDone = {IsDone}")] +[System.Diagnostics.DebuggerDisplay("TodoItemDraft: Title = {Title}, IsDone = {IsDone}")] public sealed class TodoItemDraft : ChangingObject { /// Gets or sets the short summary of the task. diff --git a/src/examples/Documentation/Pages/observing/TransferForm.cs b/src/examples/Documentation/Pages/observing/TransferForm.cs index 7ccc42d0..96a41b68 100644 --- a/src/examples/Documentation/Pages/observing/TransferForm.cs +++ b/src/examples/Documentation/Pages/observing/TransferForm.cs @@ -10,7 +10,7 @@ namespace ReactiveUI.Binding.Documentation.Observing; /// The transfer screen: the draft the customer fills in, the source account it draws on and the delivery options. /// It reports each change before and after it is applied. /// -[System.Diagnostics.DebuggerDisplay("{Amount} from {SourceName}")] +[System.Diagnostics.DebuggerDisplay("TransferForm: {Amount} from {SourceName}")] public sealed class TransferForm : ChangingObject { /// Gets or sets the amount to send, in the currency of the source account. diff --git a/src/examples/Documentation/Pages/properties/ObservableAsPropertyAttributeExamples.cs b/src/examples/Documentation/Pages/properties/ObservableAsPropertyAttributeExamples.cs index bd23ad59..52803051 100644 --- a/src/examples/Documentation/Pages/properties/ObservableAsPropertyAttributeExamples.cs +++ b/src/examples/Documentation/Pages/properties/ObservableAsPropertyAttributeExamples.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for full license information. using ReactiveUI.Binding.Documentation.Todo; +using ReactiveUI.Primitives.Signals; namespace ReactiveUI.Binding.Documentation.Properties; @@ -22,4 +23,18 @@ public static void DeclareAPropertyWithTheAttribute() Console.WriteLine(summary.IsDone); } + + /// Reads a property before and after its helper is assigned: until then it returns its initial value. + public static void StartFromAnInitialValue() + { + var waiting = new StatusViewModel(null); + var ready = new StatusViewModel(Signal.Return("Ready")); + + Console.WriteLine(waiting.Status); + Console.WriteLine(ready.Status); + + // Output: + // Loading + // Ready + } } diff --git a/src/examples/Documentation/Pages/properties/PartialOwnEventViewModel.cs b/src/examples/Documentation/Pages/properties/PartialOwnEventViewModel.cs index 9011f2a2..430c897d 100644 --- a/src/examples/Documentation/Pages/properties/PartialOwnEventViewModel.cs +++ b/src/examples/Documentation/Pages/properties/PartialOwnEventViewModel.cs @@ -13,7 +13,7 @@ namespace ReactiveUI.Binding.Documentation.Properties; /// . This backs with the selector overload of ToProperty, and /// with the overload that also returns the helper through an parameter. /// -[System.Diagnostics.DebuggerDisplay("Title = {Title}")] +[System.Diagnostics.DebuggerDisplay("PartialOwnEventViewModel: Title = {Title}")] public sealed partial class PartialOwnEventViewModel : INotifyPropertyChanged { /// Backs . diff --git a/src/examples/Documentation/Pages/properties/PartialProtectedBaseViewModel.cs b/src/examples/Documentation/Pages/properties/PartialProtectedBaseViewModel.cs index e91f639f..5c2f0043 100644 --- a/src/examples/Documentation/Pages/properties/PartialProtectedBaseViewModel.cs +++ b/src/examples/Documentation/Pages/properties/PartialProtectedBaseViewModel.cs @@ -15,7 +15,7 @@ namespace ReactiveUI.Binding.Documentation.Properties; /// generator adds a small member to a declaration that calls it on the type's behalf. This /// backs with deferred subscription, and with a scheduler. /// -[System.Diagnostics.DebuggerDisplay("DueDateLabel = {DueDateLabel}")] +[System.Diagnostics.DebuggerDisplay("PartialProtectedBaseViewModel: DueDateLabel = {DueDateLabel}")] public sealed partial class PartialProtectedBaseViewModel : ObservableObject { /// The label shown for an item with no due date. diff --git a/src/examples/Documentation/Pages/properties/Program.cs b/src/examples/Documentation/Pages/properties/Program.cs index a9bff8d0..f38cb178 100644 --- a/src/examples/Documentation/Pages/properties/Program.cs +++ b/src/examples/Documentation/Pages/properties/Program.cs @@ -22,3 +22,5 @@ ObservableAsPropertyHelperExamples.CreateAHelperThatNeverChanges(); ObservableAsPropertyAttributeExamples.DeclareAPropertyWithTheAttribute(); + +ObservableAsPropertyAttributeExamples.StartFromAnInitialValue(); diff --git a/src/examples/Documentation/Pages/properties/RaiseMethodViewModel.cs b/src/examples/Documentation/Pages/properties/RaiseMethodViewModel.cs index 120b3697..b68e00bf 100644 --- a/src/examples/Documentation/Pages/properties/RaiseMethodViewModel.cs +++ b/src/examples/Documentation/Pages/properties/RaiseMethodViewModel.cs @@ -12,7 +12,7 @@ namespace ReactiveUI.Binding.Documentation.Properties; /// method it inherits. This backs with the selector overload and an initial-value /// factory, and with the named-property overload and an initial value. /// -[System.Diagnostics.DebuggerDisplay("RemainingLabel = {RemainingLabel}")] +[System.Diagnostics.DebuggerDisplay("RaiseMethodViewModel: RemainingLabel = {RemainingLabel}")] public sealed class RaiseMethodViewModel : RaiseMethodBase { /// The label shown before the item is loaded. diff --git a/src/examples/Documentation/Pages/properties/StatusViewModel.cs b/src/examples/Documentation/Pages/properties/StatusViewModel.cs new file mode 100644 index 00000000..868eaa0b --- /dev/null +++ b/src/examples/Documentation/Pages/properties/StatusViewModel.cs @@ -0,0 +1,32 @@ +// Copyright (c) 2019-2026 ReactiveUI and Contributors. All rights reserved. +// ReactiveUI and Contributors licenses this file to you under the MIT license. +// See the LICENSE file in the project root for full license information. + +using System.ComponentModel; + +namespace ReactiveUI.Binding.Documentation.Properties; + +/// +/// Declares a property that reports Loading until its helper is assigned, with a helper field only the +/// constructor can assign. +/// +[System.Diagnostics.DebuggerDisplay("StatusViewModel: Status = {Status}")] +public sealed partial class StatusViewModel : INotifyPropertyChanged +{ + /// Initializes a new instance of the class. + /// The statuses to report, or null while there are none yet. + public StatusViewModel(IObservable? statuses) + { + if (statuses is not null) + { + _statusHelper = statuses.ToProperty(this, static x => x.Status); + } + } + + /// + public event PropertyChangedEventHandler? PropertyChanged; + + /// Gets the current status. + [ObservableAsProperty(InitialValue = "Loading", ReadOnly = true)] + public partial string Status { get; } +} diff --git a/src/examples/Documentation/Pages/properties/SummaryViewModel.cs b/src/examples/Documentation/Pages/properties/SummaryViewModel.cs index bf06d9ca..e33056f1 100644 --- a/src/examples/Documentation/Pages/properties/SummaryViewModel.cs +++ b/src/examples/Documentation/Pages/properties/SummaryViewModel.cs @@ -13,7 +13,7 @@ namespace ReactiveUI.Binding.Documentation.Properties; /// generator in the build can see it; the source generator writes the body and a field named /// _{name}Helper, which the constructor assigns with ToProperty. /// -[System.Diagnostics.DebuggerDisplay("Title = {Title}, IsDone = {IsDone}")] +[System.Diagnostics.DebuggerDisplay("SummaryViewModel: Title = {Title}, IsDone = {IsDone}")] public sealed partial class SummaryViewModel : INotifyPropertyChanged { /// Initializes a new instance of the class. diff --git a/src/examples/Documentation/Pages/setup/ButtonCommandBinder.cs b/src/examples/Documentation/Pages/setup/ButtonCommandBinder.cs index e7c0761d..ec3c434a 100644 --- a/src/examples/Documentation/Pages/setup/ButtonCommandBinder.cs +++ b/src/examples/Documentation/Pages/setup/ButtonCommandBinder.cs @@ -10,7 +10,7 @@ namespace ReactiveUI.Binding.Documentation.Setup; /// Attaches a command to a MAUI and forwards the command parameter to the button. -[System.Diagnostics.DebuggerDisplay("BindCount = {BindCount}")] +[System.Diagnostics.DebuggerDisplay("ButtonCommandBinder: BindCount = {BindCount}")] public sealed class ButtonCommandBinder : ICreatesCommandBinding { /// The score that makes this binder win over any other binder for a button. diff --git a/src/examples/Documentation/Pages/setup/EditableTodo.cs b/src/examples/Documentation/Pages/setup/EditableTodo.cs index d3b82c5b..cfe17c5e 100644 --- a/src/examples/Documentation/Pages/setup/EditableTodo.cs +++ b/src/examples/Documentation/Pages/setup/EditableTodo.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Setup; /// A to-do title that reports each change twice: PropertyChanging before it and PropertyChanged after it. -[System.Diagnostics.DebuggerDisplay("Title = {Title}")] +[System.Diagnostics.DebuggerDisplay("EditableTodo: Title = {Title}")] public sealed class EditableTodo : ObservableObject, System.ComponentModel.INotifyPropertyChanging { /// diff --git a/src/examples/Documentation/Pages/setup/TodoItemObservableForProperty.cs b/src/examples/Documentation/Pages/setup/TodoItemObservableForProperty.cs index 4020dc5f..a00f2cf6 100644 --- a/src/examples/Documentation/Pages/setup/TodoItemObservableForProperty.cs +++ b/src/examples/Documentation/Pages/setup/TodoItemObservableForProperty.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Setup; /// Observes properties through PropertyChanged and counts each observation it serves. -[System.Diagnostics.DebuggerDisplay("ObservationCount = {ObservationCount}")] +[System.Diagnostics.DebuggerDisplay("TodoItemObservableForProperty: ObservationCount = {ObservationCount}")] public sealed class TodoItemObservableForProperty : ICreatesObservableForProperty { /// The score that outranks the observation the generator writes for a PropertyChanged type. diff --git a/src/examples/Documentation/Pages/setup/aot/TodoRowView.cs b/src/examples/Documentation/Pages/setup/aot/TodoRowView.cs index 4fef7fa1..c83801d2 100644 --- a/src/examples/Documentation/Pages/setup/aot/TodoRowView.cs +++ b/src/examples/Documentation/Pages/setup/aot/TodoRowView.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Setup.Aot; /// One row of the to-do list, with the two texts a row shows. It has no UI framework behind it, so the published program needs nothing else. -[System.Diagnostics.DebuggerDisplay("TitleText = {TitleText}, StatusText = {StatusText}")] +[System.Diagnostics.DebuggerDisplay("TodoRowView: TitleText = {TitleText}, StatusText = {StatusText}")] public sealed class TodoRowView : ObservableObject { /// Gets or sets the text that shows the title of the item. diff --git a/src/examples/Documentation/Pages/threading/Avalonia/AvaloniaTodoView.cs b/src/examples/Documentation/Pages/threading/Avalonia/AvaloniaTodoView.cs index 319b9201..c53855d9 100644 --- a/src/examples/Documentation/Pages/threading/Avalonia/AvaloniaTodoView.cs +++ b/src/examples/Documentation/Pages/threading/Avalonia/AvaloniaTodoView.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Threading; /// The to-do screen as an Avalonia view: the filter box, the item list, the checkbox for the selected item and the count of items left. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("AvaloniaTodoView: ViewModel = {ViewModel}")] public sealed class AvaloniaTodoView : UserControl, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/threading/Avalonia/AvaloniaTransferView.cs b/src/examples/Documentation/Pages/threading/Avalonia/AvaloniaTransferView.cs index 74f72cf8..fd42ef31 100644 --- a/src/examples/Documentation/Pages/threading/Avalonia/AvaloniaTransferView.cs +++ b/src/examples/Documentation/Pages/threading/Avalonia/AvaloniaTransferView.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Threading; /// The transfer screen as an Avalonia view: the amount box, the send button and the label for validation. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("AvaloniaTransferView: ViewModel = {ViewModel}")] public sealed class AvaloniaTransferView : UserControl, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/threading/Avalonia/AvaloniaUploadView.cs b/src/examples/Documentation/Pages/threading/Avalonia/AvaloniaUploadView.cs index 9e65f614..73864ab2 100644 --- a/src/examples/Documentation/Pages/threading/Avalonia/AvaloniaUploadView.cs +++ b/src/examples/Documentation/Pages/threading/Avalonia/AvaloniaUploadView.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Threading; /// The storage upload screen as an Avalonia view: the progress bar of the running upload. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("AvaloniaUploadView: ViewModel = {ViewModel}")] public sealed class AvaloniaUploadView : UserControl, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/threading/Maui/MauiTodoPage.cs b/src/examples/Documentation/Pages/threading/Maui/MauiTodoPage.cs index e98a9bad..e761d8ce 100644 --- a/src/examples/Documentation/Pages/threading/Maui/MauiTodoPage.cs +++ b/src/examples/Documentation/Pages/threading/Maui/MauiTodoPage.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Threading; /// The to-do screen as a MAUI page: the filter entry, the checkbox and the tick mark for the selected item, and the count of items left. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("MauiTodoPage: ViewModel = {ViewModel}")] public sealed class MauiTodoPage : ContentPage, IViewFor { /// The bindable property behind . diff --git a/src/examples/Documentation/Pages/threading/Maui/MauiTransferPage.cs b/src/examples/Documentation/Pages/threading/Maui/MauiTransferPage.cs index d240d3e2..43715063 100644 --- a/src/examples/Documentation/Pages/threading/Maui/MauiTransferPage.cs +++ b/src/examples/Documentation/Pages/threading/Maui/MauiTransferPage.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Threading; /// The transfer screen as a MAUI page: the amount entry, the send button and the labels for validation and the receipt. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("MauiTransferPage: ViewModel = {ViewModel}")] public sealed class MauiTransferPage : ContentPage, IViewFor { /// The bindable property behind . diff --git a/src/examples/Documentation/Pages/threading/WinForms/WinFormsTodoForm.cs b/src/examples/Documentation/Pages/threading/WinForms/WinFormsTodoForm.cs index 83a068cb..7cdccac9 100644 --- a/src/examples/Documentation/Pages/threading/WinForms/WinFormsTodoForm.cs +++ b/src/examples/Documentation/Pages/threading/WinForms/WinFormsTodoForm.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.Threading; /// The to-do screen as a Windows Forms form: the filter box, the item list, the priority picker, the checkbox for the selected item and the count of items left. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("WinFormsTodoForm: ViewModel = {ViewModel}")] public sealed class WinFormsTodoForm : Form, IViewFor { /// Initializes a new instance of the class and puts its controls on the form. diff --git a/src/examples/Documentation/Pages/threading/WinForms/WinFormsTransferForm.cs b/src/examples/Documentation/Pages/threading/WinForms/WinFormsTransferForm.cs index 7de142d6..8a4f4613 100644 --- a/src/examples/Documentation/Pages/threading/WinForms/WinFormsTransferForm.cs +++ b/src/examples/Documentation/Pages/threading/WinForms/WinFormsTransferForm.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.Threading; /// The transfer screen as a Windows Forms form: the amount box, the reference box, the send button and the labels for validation and the receipt. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("WinFormsTransferForm: ViewModel = {ViewModel}")] public sealed class WinFormsTransferForm : Form, IViewFor { /// Gets or sets the view model the form shows. diff --git a/src/examples/Documentation/Pages/threading/WinForms/WinFormsUploadForm.cs b/src/examples/Documentation/Pages/threading/WinForms/WinFormsUploadForm.cs index 6ce2dbcb..fb018f29 100644 --- a/src/examples/Documentation/Pages/threading/WinForms/WinFormsUploadForm.cs +++ b/src/examples/Documentation/Pages/threading/WinForms/WinFormsUploadForm.cs @@ -10,7 +10,7 @@ namespace ReactiveUI.Binding.Documentation.Threading; /// The storage upload screen as a Windows Forms form: the progress bar of the running upload. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("WinFormsUploadForm: ViewModel = {ViewModel}")] public sealed class WinFormsUploadForm : Form, IViewFor { /// Gets or sets the view model the form shows. diff --git a/src/examples/Documentation/Pages/threading/Wpf/WpfTodoWindow.cs b/src/examples/Documentation/Pages/threading/Wpf/WpfTodoWindow.cs index 3b433e62..72f186c4 100644 --- a/src/examples/Documentation/Pages/threading/Wpf/WpfTodoWindow.cs +++ b/src/examples/Documentation/Pages/threading/Wpf/WpfTodoWindow.cs @@ -11,7 +11,7 @@ namespace ReactiveUI.Binding.Documentation.Threading; /// The to-do screen as a WPF window: the filter box, the checkbox and the tick mark for the selected item, and the count of items left. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("WpfTodoWindow: ViewModel = {ViewModel}")] public sealed class WpfTodoWindow : Window, IViewFor { /// The dependency property behind . diff --git a/src/examples/Documentation/Pages/threading/Wpf/WpfTransferWindow.cs b/src/examples/Documentation/Pages/threading/Wpf/WpfTransferWindow.cs index 44951836..c94e73a3 100644 --- a/src/examples/Documentation/Pages/threading/Wpf/WpfTransferWindow.cs +++ b/src/examples/Documentation/Pages/threading/Wpf/WpfTransferWindow.cs @@ -10,7 +10,7 @@ namespace ReactiveUI.Binding.Documentation.Threading; /// The transfer screen as a WPF window: the amount box, the reference box, the send button and the labels for validation and the receipt. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("WpfTransferWindow: ViewModel = {ViewModel}")] public sealed class WpfTransferWindow : Window, IViewFor { /// Gets or sets the view model the window shows. diff --git a/src/examples/Documentation/Pages/threading/Wpf/WpfUploadWindow.cs b/src/examples/Documentation/Pages/threading/Wpf/WpfUploadWindow.cs index dc4e6c14..487500d8 100644 --- a/src/examples/Documentation/Pages/threading/Wpf/WpfUploadWindow.cs +++ b/src/examples/Documentation/Pages/threading/Wpf/WpfUploadWindow.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Threading; /// The storage upload screen as a WPF window: the progress bar of the running upload. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("WpfUploadWindow: ViewModel = {ViewModel}")] public sealed class WpfUploadWindow : Window, IViewFor { /// The value of a full progress bar. diff --git a/src/examples/Documentation/Pages/unsafe/EditableTodoItem.cs b/src/examples/Documentation/Pages/unsafe/EditableTodoItem.cs index 4754b0cc..c6a5fc44 100644 --- a/src/examples/Documentation/Pages/unsafe/EditableTodoItem.cs +++ b/src/examples/Documentation/Pages/unsafe/EditableTodoItem.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.UnsafeOverloads; /// A to-do item being edited. It reports each change of its title, notes and done flag twice: before it is applied and after. -[System.Diagnostics.DebuggerDisplay("Title = {Title}")] +[System.Diagnostics.DebuggerDisplay("EditableTodoItem: Title = {Title}")] public sealed class EditableTodoItem : ObservableObject, INotifyPropertyChanging { /// diff --git a/src/examples/Documentation/Pages/unsafe/TodoHeadlineViewModel.cs b/src/examples/Documentation/Pages/unsafe/TodoHeadlineViewModel.cs index d1f0191a..d97d5133 100644 --- a/src/examples/Documentation/Pages/unsafe/TodoHeadlineViewModel.cs +++ b/src/examples/Documentation/Pages/unsafe/TodoHeadlineViewModel.cs @@ -12,7 +12,7 @@ namespace ReactiveUI.Binding.Documentation.UnsafeOverloads; /// Generated code cannot call that method, so ToProperty reports RXUIBIND012 here and ToPropertyUnsafe /// backs the property instead. /// -[DebuggerDisplay("Headline = {Headline}")] +[DebuggerDisplay("TodoHeadlineViewModel: Headline = {Headline}")] public sealed class TodoHeadlineViewModel : ObservableObject { /// Backs . diff --git a/src/examples/Documentation/Pages/views/AccountListView.cs b/src/examples/Documentation/Pages/views/AccountListView.cs index 69a914b9..471fe127 100644 --- a/src/examples/Documentation/Pages/views/AccountListView.cs +++ b/src/examples/Documentation/Pages/views/AccountListView.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Views; /// The screen for any list of accounts. It is registered for the interface, so every view model that implements it gets this screen. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("AccountListView: ViewModel = {ViewModel}")] public sealed class AccountListView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/views/AccountListViewModel.cs b/src/examples/Documentation/Pages/views/AccountListViewModel.cs index 267cf655..dba1b417 100644 --- a/src/examples/Documentation/Pages/views/AccountListViewModel.cs +++ b/src/examples/Documentation/Pages/views/AccountListViewModel.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Views; /// The accounts the customer can use. -[System.Diagnostics.DebuggerDisplay("Accounts = {Accounts.Count}")] +[System.Diagnostics.DebuggerDisplay("AccountListViewModel: Accounts = {Accounts.Count}")] public sealed class AccountListViewModel : ObservableObject, IAccountList { /// Initializes a new instance of the class. diff --git a/src/examples/Documentation/Pages/views/AccountStatementView.cs b/src/examples/Documentation/Pages/views/AccountStatementView.cs index 2b9e4e02..99849a55 100644 --- a/src/examples/Documentation/Pages/views/AccountStatementView.cs +++ b/src/examples/Documentation/Pages/views/AccountStatementView.cs @@ -10,7 +10,7 @@ namespace ReactiveUI.Binding.Documentation.Views; /// The account screen for printing a statement, registered under a contract. [ViewContract(AccountViewContracts.Statement)] -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("AccountStatementView: ViewModel = {ViewModel}")] public sealed class AccountStatementView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/views/AccountSummaryView.cs b/src/examples/Documentation/Pages/views/AccountSummaryView.cs index 2d9919a9..60f4c1e8 100644 --- a/src/examples/Documentation/Pages/views/AccountSummaryView.cs +++ b/src/examples/Documentation/Pages/views/AccountSummaryView.cs @@ -10,7 +10,7 @@ namespace ReactiveUI.Binding.Documentation.Views; /// The account screen: one line with the balance. The locator builds it once and hands out the same screen every time. [SingleInstanceView] -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("AccountSummaryView: ViewModel = {ViewModel}")] public sealed class AccountSummaryView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/views/ClosedAccountListViewModel.cs b/src/examples/Documentation/Pages/views/ClosedAccountListViewModel.cs index 7667b234..c879fa85 100644 --- a/src/examples/Documentation/Pages/views/ClosedAccountListViewModel.cs +++ b/src/examples/Documentation/Pages/views/ClosedAccountListViewModel.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Views; /// The accounts the customer has closed. -[System.Diagnostics.DebuggerDisplay("Accounts = {Accounts.Count}")] +[System.Diagnostics.DebuggerDisplay("ClosedAccountListViewModel: Accounts = {Accounts.Count}")] public sealed class ClosedAccountListViewModel : ObservableObject, IAccountList { /// Initializes a new instance of the class. diff --git a/src/examples/Documentation/Pages/views/CompactAccountsView.cs b/src/examples/Documentation/Pages/views/CompactAccountsView.cs index 82aea4c9..49412428 100644 --- a/src/examples/Documentation/Pages/views/CompactAccountsView.cs +++ b/src/examples/Documentation/Pages/views/CompactAccountsView.cs @@ -10,7 +10,7 @@ namespace ReactiveUI.Binding.Documentation.Views; /// The accounts screen for a narrow window: it shows only the balance of the selected account. [ViewContract(AccountViewContracts.Compact)] -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("CompactAccountsView: ViewModel = {ViewModel}")] public sealed class CompactAccountsView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/views/DetailedAccountListView.cs b/src/examples/Documentation/Pages/views/DetailedAccountListView.cs index e767837f..60d90454 100644 --- a/src/examples/Documentation/Pages/views/DetailedAccountListView.cs +++ b/src/examples/Documentation/Pages/views/DetailedAccountListView.cs @@ -8,7 +8,7 @@ namespace ReactiveUI.Binding.Documentation.Views; /// A richer screen for the current accounts. It is registered for the concrete view model, next to the interface screen. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("DetailedAccountListView: ViewModel = {ViewModel}")] public sealed class DetailedAccountListView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/views/ReceiptView.cs b/src/examples/Documentation/Pages/views/ReceiptView.cs index 13699e12..f6f0213c 100644 --- a/src/examples/Documentation/Pages/views/ReceiptView.cs +++ b/src/examples/Documentation/Pages/views/ReceiptView.cs @@ -9,7 +9,7 @@ namespace ReactiveUI.Binding.Documentation.Views; /// The screen for a transfer receipt. It needs a heading to be built, so it has no parameterless constructor. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("ReceiptView: ViewModel = {ViewModel}")] public sealed class ReceiptView : ObservableObject, IViewFor { /// Initializes a new instance of the class. diff --git a/src/examples/Documentation/Pages/views/TodoItemDetailView.cs b/src/examples/Documentation/Pages/views/TodoItemDetailView.cs index aabe0842..24042e6c 100644 --- a/src/examples/Documentation/Pages/views/TodoItemDetailView.cs +++ b/src/examples/Documentation/Pages/views/TodoItemDetailView.cs @@ -10,7 +10,7 @@ namespace ReactiveUI.Binding.Documentation.Views; /// The detail screen of one to-do item. It is left out of the generated lookup, so the application registers it with the service locator. [ExcludeFromViewRegistration] -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("TodoItemDetailView: ViewModel = {ViewModel}")] public sealed class TodoItemDetailView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/views/TodoItemPreviewView.cs b/src/examples/Documentation/Pages/views/TodoItemPreviewView.cs index c8faf21d..53f01d7d 100644 --- a/src/examples/Documentation/Pages/views/TodoItemPreviewView.cs +++ b/src/examples/Documentation/Pages/views/TodoItemPreviewView.cs @@ -10,7 +10,7 @@ namespace ReactiveUI.Binding.Documentation.Views; /// A preview of one to-do item. It is left out of the generated lookup, so the application maps it itself. [ExcludeFromViewRegistration] -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("TodoItemPreviewView: ViewModel = {ViewModel}")] public sealed class TodoItemPreviewView : ObservableObject, IViewFor { /// Gets or sets the view model the view shows. diff --git a/src/examples/Documentation/Pages/views/TodoViewLocator.cs b/src/examples/Documentation/Pages/views/TodoViewLocator.cs index cc2b7d26..d7df6973 100644 --- a/src/examples/Documentation/Pages/views/TodoViewLocator.cs +++ b/src/examples/Documentation/Pages/views/TodoViewLocator.cs @@ -7,7 +7,7 @@ namespace ReactiveUI.Binding.Documentation.Views; /// A view locator for an application with one screen: it answers for the to-do list and for nothing else. -[System.Diagnostics.DebuggerDisplay("Screen = TodoView")] +[System.Diagnostics.DebuggerDisplay("TodoViewLocator: Screen = TodoView")] public sealed class TodoViewLocator : IViewLocator { /// diff --git a/src/examples/Platforms/PlatformBindingsVerification/Maui/MauiCounterViewModel.cs b/src/examples/Platforms/PlatformBindingsVerification/Maui/MauiCounterViewModel.cs index 5b62fbd0..c024e672 100644 --- a/src/examples/Platforms/PlatformBindingsVerification/Maui/MauiCounterViewModel.cs +++ b/src/examples/Platforms/PlatformBindingsVerification/Maui/MauiCounterViewModel.cs @@ -8,7 +8,7 @@ namespace PlatformBindingsVerification.Maui; /// Backs with an built from a source that is pushed from a background thread. -[System.Diagnostics.DebuggerDisplay("Text = {Text}")] +[System.Diagnostics.DebuggerDisplay("MauiCounterViewModel: Text = {Text}")] public sealed partial class MauiCounterViewModel : INotifyPropertyChanged { /// Backs . diff --git a/src/examples/Platforms/PlatformBindingsVerification/WinForms/WinFormsCounterViewModel.cs b/src/examples/Platforms/PlatformBindingsVerification/WinForms/WinFormsCounterViewModel.cs index 28d1e4cb..430376d4 100644 --- a/src/examples/Platforms/PlatformBindingsVerification/WinForms/WinFormsCounterViewModel.cs +++ b/src/examples/Platforms/PlatformBindingsVerification/WinForms/WinFormsCounterViewModel.cs @@ -8,7 +8,7 @@ namespace PlatformBindingsVerification.WinForms; /// Backs with an built from a source that is pushed from a background thread. -[System.Diagnostics.DebuggerDisplay("Text = {Text}")] +[System.Diagnostics.DebuggerDisplay("WinFormsCounterViewModel: Text = {Text}")] public sealed partial class WinFormsCounterViewModel : INotifyPropertyChanged { /// Backs . diff --git a/src/examples/Platforms/PlatformBindingsVerification/Wpf/WpfCommandViewModel.cs b/src/examples/Platforms/PlatformBindingsVerification/Wpf/WpfCommandViewModel.cs index 3c0706ab..f9066398 100644 --- a/src/examples/Platforms/PlatformBindingsVerification/Wpf/WpfCommandViewModel.cs +++ b/src/examples/Platforms/PlatformBindingsVerification/Wpf/WpfCommandViewModel.cs @@ -8,7 +8,7 @@ namespace PlatformBindingsVerification.Wpf; /// Holds the command a button runs, which the example replaces from a background thread. -[System.Diagnostics.DebuggerDisplay("Save = {Save}")] +[System.Diagnostics.DebuggerDisplay("WpfCommandViewModel: Save = {Save}")] public sealed class WpfCommandViewModel : INotifyPropertyChanged { /// diff --git a/src/examples/Platforms/PlatformBindingsVerification/Wpf/WpfCounterViewModel.cs b/src/examples/Platforms/PlatformBindingsVerification/Wpf/WpfCounterViewModel.cs index b80edc5a..58d5aee0 100644 --- a/src/examples/Platforms/PlatformBindingsVerification/Wpf/WpfCounterViewModel.cs +++ b/src/examples/Platforms/PlatformBindingsVerification/Wpf/WpfCounterViewModel.cs @@ -8,7 +8,7 @@ namespace PlatformBindingsVerification.Wpf; /// Backs with an built from a source that is pushed from a background thread. -[System.Diagnostics.DebuggerDisplay("Text = {Text}")] +[System.Diagnostics.DebuggerDisplay("WpfCounterViewModel: Text = {Text}")] public sealed partial class WpfCounterViewModel : INotifyPropertyChanged { /// Backs . diff --git a/src/examples/Platforms/PlatformBindingsVerification/Wpf/WpfPlainCommandView.cs b/src/examples/Platforms/PlatformBindingsVerification/Wpf/WpfPlainCommandView.cs index 99ae24b3..0c772a3e 100644 --- a/src/examples/Platforms/PlatformBindingsVerification/Wpf/WpfPlainCommandView.cs +++ b/src/examples/Platforms/PlatformBindingsVerification/Wpf/WpfPlainCommandView.cs @@ -8,7 +8,7 @@ namespace PlatformBindingsVerification.Wpf; /// A view that is a plain object, not a WPF element, holding a WPF button that the dispatcher owns. -[System.Diagnostics.DebuggerDisplay("ViewModel = {ViewModel}")] +[System.Diagnostics.DebuggerDisplay("WpfPlainCommandView: ViewModel = {ViewModel}")] public sealed class WpfPlainCommandView : IViewFor, INotifyPropertyChanged { /// diff --git a/src/examples/Platforms/ToPropertyVerification/Common/AttributeViewModel.cs b/src/examples/Platforms/ToPropertyVerification/Common/AttributeViewModel.cs index 634c79a6..5ee01a29 100644 --- a/src/examples/Platforms/ToPropertyVerification/Common/AttributeViewModel.cs +++ b/src/examples/Platforms/ToPropertyVerification/Common/AttributeViewModel.cs @@ -14,7 +14,7 @@ namespace ToPropertyVerification.Common; /// avoid reusing the exact selector text SourceItem's own WhenChanged call sites use elsewhere in this /// project; see the remark on ReactiveObjectViewModel for why. /// -[System.Diagnostics.DebuggerDisplay("AttrCount = {AttrCount}, AttrLabel = {AttrLabel}")] +[System.Diagnostics.DebuggerDisplay("AttributeViewModel: AttrCount = {AttrCount}, AttrLabel = {AttrLabel}")] public sealed partial class AttributeViewModel : INotifyPropertyChanged { /// Initializes a new instance of the class. diff --git a/src/examples/Platforms/ToPropertyVerification/Common/CombinedOverloadsViewModel.cs b/src/examples/Platforms/ToPropertyVerification/Common/CombinedOverloadsViewModel.cs index 79bdf965..d9d29d95 100644 --- a/src/examples/Platforms/ToPropertyVerification/Common/CombinedOverloadsViewModel.cs +++ b/src/examples/Platforms/ToPropertyVerification/Common/CombinedOverloadsViewModel.cs @@ -11,7 +11,7 @@ namespace ToPropertyVerification.Common; /// the parameter together with a plain initial value, and the parameter /// together with an initial-value factory. /// -[System.Diagnostics.DebuggerDisplay("DeferredScheduled = {DeferredScheduled}, OutWithInitial = {OutWithInitial}, OutWithFactory = {OutWithFactory}")] +[System.Diagnostics.DebuggerDisplay("CombinedOverloadsViewModel: DeferredScheduled = {DeferredScheduled}, OutWithInitial = {OutWithInitial}, OutWithFactory = {OutWithFactory}")] public sealed partial class CombinedOverloadsViewModel : INotifyPropertyChanged { /// The plain initial value starts at. diff --git a/src/examples/Platforms/ToPropertyVerification/Common/FieldEventViewModel.cs b/src/examples/Platforms/ToPropertyVerification/Common/FieldEventViewModel.cs index a9e49a05..92eb59ca 100644 --- a/src/examples/Platforms/ToPropertyVerification/Common/FieldEventViewModel.cs +++ b/src/examples/Platforms/ToPropertyVerification/Common/FieldEventViewModel.cs @@ -13,7 +13,7 @@ namespace ToPropertyVerification.Common; /// with the selector overload that returns its helper through an /// parameter. /// -[System.Diagnostics.DebuggerDisplay("DoubledCount = {DoubledCount}, LabelText = {LabelText}")] +[System.Diagnostics.DebuggerDisplay("FieldEventViewModel: DoubledCount = {DoubledCount}, LabelText = {LabelText}")] public sealed partial class FieldEventViewModel : INotifyPropertyChanged { /// The factor multiplies the followed item's count by. diff --git a/src/examples/Platforms/ToPropertyVerification/Common/ProtectedBaseViewModel.cs b/src/examples/Platforms/ToPropertyVerification/Common/ProtectedBaseViewModel.cs index 045e022d..b8c1768f 100644 --- a/src/examples/Platforms/ToPropertyVerification/Common/ProtectedBaseViewModel.cs +++ b/src/examples/Platforms/ToPropertyVerification/Common/ProtectedBaseViewModel.cs @@ -9,7 +9,7 @@ namespace ToPropertyVerification.Common; /// declaration that calls it on the type's behalf. Backs with /// deferred subscription, and with an explicit scheduler. /// -[System.Diagnostics.DebuggerDisplay("DeferredFlag = {DeferredFlag}, ScheduledLabel = {ScheduledLabel}")] +[System.Diagnostics.DebuggerDisplay("ProtectedBaseViewModel: DeferredFlag = {DeferredFlag}, ScheduledLabel = {ScheduledLabel}")] public sealed partial class ProtectedBaseViewModel : ProtectedRaiseBase { /// Backs . diff --git a/src/examples/Platforms/ToPropertyVerification/Common/RaiseMethodViewModel.cs b/src/examples/Platforms/ToPropertyVerification/Common/RaiseMethodViewModel.cs index 64b9cf1c..e475852a 100644 --- a/src/examples/Platforms/ToPropertyVerification/Common/RaiseMethodViewModel.cs +++ b/src/examples/Platforms/ToPropertyVerification/Common/RaiseMethodViewModel.cs @@ -10,7 +10,7 @@ namespace ToPropertyVerification.Common; /// Backs with the named-property overload and a plain initial value, and /// with the selector overload and an initial-value factory. /// -[System.Diagnostics.DebuggerDisplay("CountText = {CountText}, UpperLabel = {UpperLabel}")] +[System.Diagnostics.DebuggerDisplay("RaiseMethodViewModel: CountText = {CountText}, UpperLabel = {UpperLabel}")] public sealed class RaiseMethodViewModel : RaiseMethodBase { /// The initial value takes before the first notification. diff --git a/src/examples/Platforms/ToPropertyVerification/Common/ReactiveObjectViewModel.cs b/src/examples/Platforms/ToPropertyVerification/Common/ReactiveObjectViewModel.cs index 433ba713..295c5a1d 100644 --- a/src/examples/Platforms/ToPropertyVerification/Common/ReactiveObjectViewModel.cs +++ b/src/examples/Platforms/ToPropertyVerification/Common/ReactiveObjectViewModel.cs @@ -11,7 +11,7 @@ namespace ToPropertyVerification.Common; /// Backs with the selector overload, and with the selector /// overload that returns its helper through an parameter and a plain initial value. /// -[System.Diagnostics.DebuggerDisplay("Count = {Count}, Label = {Label}")] +[System.Diagnostics.DebuggerDisplay("ReactiveObjectViewModel: Count = {Count}, Label = {Label}")] public sealed class ReactiveObjectViewModel : global::ReactiveUI.ReactiveObject { /// The plain initial value starts at. diff --git a/src/examples/Platforms/ToPropertyVerification/Common/SourceItem.cs b/src/examples/Platforms/ToPropertyVerification/Common/SourceItem.cs index 2c047c92..c2d7d533 100644 --- a/src/examples/Platforms/ToPropertyVerification/Common/SourceItem.cs +++ b/src/examples/Platforms/ToPropertyVerification/Common/SourceItem.cs @@ -7,7 +7,7 @@ namespace ToPropertyVerification.Common; /// An ordinary source that every scenario below follows with WhenChanged. -[System.Diagnostics.DebuggerDisplay("Count = {Count}, Label = {Label}")] +[System.Diagnostics.DebuggerDisplay("SourceItem: Count = {Count}, Label = {Label}")] public sealed class SourceItem : INotifyPropertyChanged { /// The label a new starts with. diff --git a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests.Roslyn413/ReactiveUI.Binding.SourceGenerators.Tests.Roslyn413.csproj b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests.Roslyn413/ReactiveUI.Binding.SourceGenerators.Tests.Roslyn413.csproj index e5209c5b..0a4a3141 100644 --- a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests.Roslyn413/ReactiveUI.Binding.SourceGenerators.Tests.Roslyn413.csproj +++ b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests.Roslyn413/ReactiveUI.Binding.SourceGenerators.Tests.Roslyn413.csproj @@ -11,6 +11,7 @@ + @@ -23,6 +24,7 @@ + diff --git a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/Helpers/CodeFixRunner.cs b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/Helpers/CodeFixRunner.cs new file mode 100644 index 00000000..49aa6af3 --- /dev/null +++ b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/Helpers/CodeFixRunner.cs @@ -0,0 +1,165 @@ +// Copyright (c) 2019-2026 ReactiveUI and Contributors. All rights reserved. +// ReactiveUI and Contributors licenses this file to you under the MIT license. +// See the LICENSE file in the project root for full license information. + +extern alias analyzer; + +using System.Collections.Immutable; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CodeActions; +using Microsoft.CodeAnalysis.CodeFixes; +using Microsoft.CodeAnalysis.Diagnostics; + +namespace ReactiveUI.Binding.SourceGenerators.Tests.Helpers; + +/// Runs the [ObservableAsProperty] analyzer and its code fix over a document, as an IDE would. +internal static class CodeFixRunner +{ + /// The name the document is given in the workspace. + private const string DocumentName = "Test.cs"; + + /// The name of the project and its assembly. + private const string ProjectName = "TestAssembly"; + + /// The code action's title, which is also its fix-all equivalence key. + private const string FixTitle = "Convert [ObservableAsProperty] members to partial properties"; + + /// The runtime package a test project references. + internal enum Runtime + { + /// The lean ReactiveUI.Binding package. + Lean = 0, + + /// The ReactiveUI.Binding.Reactive package. + Reactive = 1, + + /// Neither package. + None = 2, + } + + /// Returns the diagnostics the analyzer reports for a source. + /// The consumer source. + /// The consumer's language version. + /// The runtime package the project references. + /// The diagnostics, in source order. + internal static async Task> AnalyzeAsync(string source, LanguageVersion languageVersion, Runtime runtime = Runtime.Lean) + { + var document = CreateDocument(source, languageVersion, runtime); + return await DiagnosticsAsync(document).ConfigureAwait(false); + } + + /// Applies the code fix offered for the first fixable diagnostic. + /// The consumer source. + /// The consumer's language version. + /// The fixed source, or null when no fix was offered. + internal static async Task FixFirstAsync(string source, LanguageVersion languageVersion) + { + var document = CreateDocument(source, languageVersion); + var diagnostics = await DiagnosticsAsync(document).ConfigureAwait(false); + var provider = new analyzer::ReactiveUI.Binding.Analyzer.CodeFixes.ObservableAsPropertyCodeFixProvider(); + var actions = new List(); + for (var i = 0; i < diagnostics.Length && actions.Count == 0; i++) + { + if (!provider.FixableDiagnosticIds.Contains(diagnostics[i].Id)) + { + continue; + } + + var context = new CodeFixContext(document, diagnostics[i], (action, _) => actions.Add(action), CancellationToken.None); + await provider.RegisterCodeFixesAsync(context).ConfigureAwait(false); + } + + return actions.Count == 0 ? null : await ApplyAsync(document, actions[0]).ConfigureAwait(false); + } + + /// Applies the code fix to every diagnostic in the document at once. + /// The consumer source. + /// The consumer's language version. + /// The fixed source, or null when nothing was fixed. + internal static async Task FixAllAsync(string source, LanguageVersion languageVersion) + { + var document = CreateDocument(source, languageVersion); + var diagnostics = await DiagnosticsAsync(document).ConfigureAwait(false); + var provider = new analyzer::ReactiveUI.Binding.Analyzer.CodeFixes.ObservableAsPropertyCodeFixProvider(); + var context = new FixAllContext( + document, + provider, + FixAllScope.Document, + FixTitle, + provider.FixableDiagnosticIds, + new FixedDiagnostics(diagnostics), + CancellationToken.None); + var action = await provider.GetFixAllProvider().GetFixAsync(context).ConfigureAwait(false); + return action is null ? null : await ApplyAsync(document, action).ConfigureAwait(false); + } + + /// Creates a document in a project referencing a runtime package. + /// The document text. + /// The language version. + /// The runtime package the project references. + /// The document. + private static Document CreateDocument(string source, LanguageVersion languageVersion, Runtime runtime = Runtime.Lean) + { + var parseOptions = TestHelper.ParseOptionsFor(languageVersion); + var compilation = TestHelper.CreateCompilation(source, parseOptions, runtime == Runtime.Reactive, ProjectName, []); + if (runtime == Runtime.None) + { + compilation = compilation.RemoveReferences(compilation.References.Where(static r => r.Display?.Contains("ReactiveUI.Binding", StringComparison.Ordinal) == true)); + } + + var workspace = new AdhocWorkspace(); + var projectId = ProjectId.CreateNewId(); + var solution = workspace.CurrentSolution + .AddProject(ProjectInfo.Create( + projectId, + VersionStamp.Default, + ProjectName, + ProjectName, + LanguageNames.CSharp, + compilationOptions: compilation.Options, + parseOptions: parseOptions, + metadataReferences: compilation.References)); + var documentId = DocumentId.CreateNewId(projectId); + return solution.AddDocument(documentId, DocumentName, source).GetDocument(documentId)!; + } + + /// Runs the analyzer over a document's project. + /// The document. + /// The analyzer's diagnostics, in source order. + private static async Task> DiagnosticsAsync(Document document) + { + var compilation = (await document.Project.GetCompilationAsync().ConfigureAwait(false))!; + var diagnostics = await compilation.WithAnalyzers([new analyzer::ReactiveUI.Binding.Analyzer.Analyzers.ObservableAsPropertyAnalyzer()]).GetAnalyzerDiagnosticsAsync().ConfigureAwait(false); + return [.. diagnostics.OrderBy(static d => d.Location.SourceSpan.Start)]; + } + + /// Applies a code action and returns the changed document's text. + /// The document the action changes. + /// The code action. + /// The document's new text. + private static async Task ApplyAsync(Document document, CodeAction action) + { + var operations = await action.GetOperationsAsync(CancellationToken.None).ConfigureAwait(false); + var solution = operations.OfType().Single().ChangedSolution; + var text = await solution.GetDocument(document.Id)!.GetTextAsync().ConfigureAwait(false); + return text.ToString(); + } + + /// Hands fix-all the diagnostics already computed. + /// The diagnostics. + private sealed class FixedDiagnostics(ImmutableArray diagnostics) : FixAllContext.DiagnosticProvider + { + /// + public override Task> GetAllDiagnosticsAsync(Project project, CancellationToken cancellationToken) => + Task.FromResult>(diagnostics); + + /// + public override Task> GetDocumentDiagnosticsAsync(Document document, CancellationToken cancellationToken) => + Task.FromResult>(diagnostics); + + /// + public override Task> GetProjectDiagnosticsAsync(Project project, CancellationToken cancellationToken) => + Task.FromResult>([]); + } +} diff --git a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.Options#GeneratedBindingsAttributes.g.verified.cs b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.Options#GeneratedBindingsAttributes.g.verified.cs new file mode 100644 index 00000000..452bd84f --- /dev/null +++ b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.Options#GeneratedBindingsAttributes.g.verified.cs @@ -0,0 +1,12 @@ +//HintName: GeneratedBindingsAttributes.g.cs +// +#pragma warning disable +global using global::ReactiveUI.Binding.Generated.TestAssembly; + +namespace ReactiveUI.Binding.Generated.TestAssembly +{ + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] + internal static partial class __ReactiveUIGeneratedBindings + { + } +} diff --git a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.Options#TestApp.GaugeViewModel.ObservableAsProperties.g.verified.cs b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.Options#TestApp.GaugeViewModel.ObservableAsProperties.g.verified.cs new file mode 100644 index 00000000..989354c5 --- /dev/null +++ b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.Options#TestApp.GaugeViewModel.ObservableAsProperties.g.verified.cs @@ -0,0 +1,36 @@ +//HintName: TestApp.GaugeViewModel.ObservableAsProperties.g.cs +// +#pragma warning disable +#nullable enable + +using System.ComponentModel; +using ReactiveUI.Binding; + +namespace TestApp +{ + partial class GaugeViewModel + { + /// Backs ; assign it with ToProperty. + protected global::ReactiveUI.Binding.ObservableAsPropertyHelper? _codeHelper; + + public partial string Code => _codeHelper is null ? "x" : _codeHelper.Value; + + /// The value returns until its helper is assigned. + private readonly double? _ratio = 1.1d; + + /// Backs ; assign it with ToProperty. + private readonly global::ReactiveUI.Binding.ObservableAsPropertyHelper? _ratioHelper; + + public partial double? Ratio => _ratioHelper is null ? _ratio : _ratioHelper.Value; + + /// Backs ; assign it with ToProperty. + private global::ReactiveUI.Binding.ObservableAsPropertyHelper? _labelHelper; + + public partial string Label => _labelHelper is null ? global::System.String.Empty : _labelHelper.Value; + + /// Backs ; assign it with ToProperty. + private global::ReactiveUI.Binding.ObservableAsPropertyHelper? _noteHelper; + + public partial string? Note => _noteHelper is null ? default! : _noteHelper.Value; + } +} diff --git a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.PartialProperty_WithToProperty#TestApp.PersonViewModel.ObservableAsProperties.g.verified.cs b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.PartialProperty_WithToProperty#TestApp.PersonViewModel.ObservableAsProperties.g.verified.cs index 5e08d20f..2f99f936 100644 --- a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.PartialProperty_WithToProperty#TestApp.PersonViewModel.ObservableAsProperties.g.verified.cs +++ b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.PartialProperty_WithToProperty#TestApp.PersonViewModel.ObservableAsProperties.g.verified.cs @@ -10,7 +10,7 @@ partial class PersonViewModel /// Backs ; assign it with ToProperty. private global::ReactiveUI.Binding.ObservableAsPropertyHelper? _fullNameHelper; - public partial string FullName => _fullNameHelper is null ? default! : _fullNameHelper.Value; + public partial string FullName => _fullNameHelper is null ? global::System.String.Empty : _fullNameHelper.Value; /// Backs ; assign it with ToProperty. private global::ReactiveUI.Binding.ObservableAsPropertyHelper? _ageHelper; diff --git a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.cs b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.cs index c9c78b53..ebc22199 100644 --- a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.cs +++ b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyGeneratorTests.cs @@ -10,6 +10,95 @@ namespace ReactiveUI.Binding.SourceGenerators.Tests; /// Snapshot tests for the bodies and helper fields written for [ObservableAsProperty] partial properties. public class ObservableAsPropertyGeneratorTests { + /// Splitting text on something that appears once gives this many parts. + private const int PartsForOneOccurrence = 2; + + /// A view model with an initial value on each property, and a source it pushes values through by hand. + private const string GaugeScenario = """ + using System; + using System.ComponentModel; + using ReactiveUI.Binding; + + namespace TestApp + { + public sealed class Source : IObservable + { + private IObserver? _observer; + + public IDisposable Subscribe(IObserver observer) + { + _observer = observer; + return new Nothing(); + } + + public void Push(T value) => _observer!.OnNext(value); + + private sealed class Nothing : IDisposable + { + public void Dispose() + { + } + } + } + + public partial class GaugeViewModel : INotifyPropertyChanged + { + public GaugeViewModel(Source? names, Source? ratios, bool byName) + { + if (names != null) + { + _nameHelper = byName ? names.ToProperty(this, nameof(Name)) : names.ToProperty(this, x => x.Name); + } + + if (ratios != null) + { + _ratioHelper = ratios.ToProperty(this, x => x.Ratio); + } + } + + public event PropertyChangedEventHandler? PropertyChanged; + + [ObservableAsProperty(InitialValue = "start")] + public partial string Name { get; } + + [ObservableAsProperty(InitialValue = "1.5d", ReadOnly = true, UseProtected = true)] + public partial double? Ratio { get; } + + [ObservableAsProperty] + public partial string Label { get; } + } + + public static class Usage + { + public static bool Run() + { + var idle = new GaugeViewModel(null, null, false); + if (idle.Name != "start" || idle.Ratio != 1.5d || idle.Label != string.Empty) + { + return false; + } + + foreach (var byName in new[] { false, true }) + { + var names = new Source(); + var ratios = new Source(); + var model = new GaugeViewModel(names, ratios, byName); + var raised = 0; + model.PropertyChanged += (sender, args) => raised += args.PropertyName == "Name" ? 1 : 0; + names.Push("changed"); + ratios.Push(2.5d); + if (model.Name != "changed" || model.Ratio != 2.5d || raised != 1) + { + return false; + } + } + + return true; + } + } + } + """; + /// A partial property gets a helper field and a body, and ToProperty assigns the helper. /// A task representing the asynchronous test operation. [Test] @@ -202,6 +291,173 @@ public partial class PersonViewModel await result.DoesNotHaveGeneratedSource("TestApp.PersonViewModel.ObservableAsProperties.g.cs"); } + /// + /// The attribute's options shape the helper and the value returned before it is assigned: a readonly or protected + /// helper, an expression held in a backing field, a string value written as a literal, and an empty string for a + /// non-nullable string with no initial value. + /// + /// A task representing the asynchronous test operation. + [Test] + public async Task Options() + { + const string source = """ + using System.ComponentModel; + using ReactiveUI.Binding; + + namespace TestApp + { + public partial class GaugeViewModel : INotifyPropertyChanged + { + public event PropertyChangedEventHandler? PropertyChanged; + + [ObservableAsProperty(InitialValue = "x", ReadOnly = false, UseProtected = true)] + public partial string Code { get; } + + [ObservableAsProperty(InitialValue = "1.1d", ReadOnly = true)] + public partial double? Ratio { get; } + + [ObservableAsProperty] + public partial string Label { get; } + + [ObservableAsProperty] + public partial string? Note { get; } + } + } + """; + + var result = await TestHelper.TestPassWithResult(source, typeof(ObservableAsPropertyGeneratorTests), LanguageVersion.CSharp13); + await result.CompilationSucceeds(); + await result.HasNoGeneratorDiagnostics(); + } + + /// + /// Before its helper is assigned the property returns its initial value, and once ToProperty assigns it in the + /// constructor, by lambda or by name, each value updates the property and raises PropertyChanged. + /// + /// Whether to build against the System.Reactive flavour. + /// A task representing the asynchronous test operation. + [Test] + [Arguments(false)] + [Arguments(true)] + public async Task Options_InitialValueUntilAssignedThenToPropertyValues(bool useReactiveRuntime) + { + var source = GaugeScenario; + if (useReactiveRuntime) + { + source = source.Replace("using ReactiveUI.Binding;", "using ReactiveUI.Binding.Reactive;", StringComparison.Ordinal); + } + + var result = TestHelper.RunGenerator(source, LanguageVersion.CSharp13, null, useReactiveRuntime); + await result.CompilationSucceeds(); + var (assembly, context) = TestHelper.EmitAndLoad(result); + try + { + var run = assembly.GetType("TestApp.Usage")!.GetMethod("Run", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static)!; + await Assert.That((bool)run.Invoke(null, null)!).IsTrue(); + } + finally + { + context.Unload(); + } + } + + /// + /// An initial value expression binds as it was written: the generated file repeats the declaring file's extern alias, + /// its usings and its namespace's usings, each once however many properties need them. + /// + /// A task representing the asynchronous test operation. + [Test] + public async Task InitialValue_BindsWithTheDeclaringFilesDirectives() + { + const string Source = """ + extern alias lib; + using System.ComponentModel; + using ReactiveUI.Binding; + using lib::Lib; + + namespace TestApp + { + using System.Collections.Generic; + + public partial class Holder : INotifyPropertyChanged + { + public event PropertyChangedEventHandler? PropertyChanged; + + [ObservableAsProperty(InitialValue = "Defaults.Size")] + public partial int Size { get; } + + [ObservableAsProperty(InitialValue = "new List()")] + public partial List Items { get; } + } + } + """; + + var library = TestHelper.CompileToReference("namespace Lib { public static class Defaults { public const int Size = 4; } }", "Lib", LanguageVersion.CSharp13); + var result = TestHelper.RunGenerator(Source, LanguageVersion.CSharp13, null, false, [library.WithAliases(["lib"])]); + await result.CompilationSucceeds(); + var generated = result.GeneratedSources["TestApp.Holder.ObservableAsProperties.g.cs"]; + await Assert.That(generated).Contains("extern alias lib;\nusing System.ComponentModel;\nusing ReactiveUI.Binding;\nusing lib::Lib;\nusing System.Collections.Generic;\n"); + await Assert.That(generated.Split("using lib::Lib;").Length).IsEqualTo(PartsForOneOccurrence); + } + + /// A static partial property has no instance to hold a helper, so nothing is generated for it. + /// A task representing the asynchronous test operation. + [Test] + public async Task StaticPartialProperty_GeneratesNothing() + { + const string source = """ + using ReactiveUI.Binding; + + namespace TestApp + { + public partial class Settings + { + [ObservableAsProperty] + public static partial int Count { get; } + } + } + """; + + var result = TestHelper.RunGenerator(source, LanguageVersion.CSharp13); + await result.DoesNotHaveGeneratedSource("TestApp.Settings.ObservableAsProperties.g.cs"); + } + + /// A record is reopened as a record, and one file holds every marked property it declares. + /// A task representing the asynchronous test operation. + [Test] + public async Task Record_WithSeveralProperties() + { + const string source = """ + using System; + using System.ComponentModel; + using ReactiveUI.Binding; + + namespace TestApp + { + public partial record Reading : INotifyPropertyChanged + { + public Reading(IObservable values, IObservable units) + { + _valueHelper = values.ToProperty(this, x => x.Value); + _unitHelper = units.ToProperty(this, x => x.Unit); + } + + public event PropertyChangedEventHandler? PropertyChanged; + + [ObservableAsProperty] + public partial int Value { get; } + + [ObservableAsProperty(InitialValue = "kg")] + public partial string Unit { get; } + } + } + """; + + var result = TestHelper.RunGenerator(source, LanguageVersion.CSharp13); + await result.HasGeneratedSource("TestApp.Reading.ObservableAsProperties.g.cs"); + await result.CompilationSucceeds(); + } + /// A partial property in a type nested inside a type that is not partial cannot be implemented. /// A task representing the asynchronous test operation. [Test] diff --git a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyMigrationTests.cs b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyMigrationTests.cs new file mode 100644 index 00000000..02213f52 --- /dev/null +++ b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ObservableAsPropertyMigrationTests.cs @@ -0,0 +1,496 @@ +// Copyright (c) 2019-2026 ReactiveUI and Contributors. All rights reserved. +// ReactiveUI and Contributors licenses this file to you under the MIT license. +// See the LICENSE file in the project root for full license information. + +using System.Reflection; +using Microsoft.CodeAnalysis.CSharp; +using ReactiveUI.Binding.SourceGenerators.Tests.Helpers; + +namespace ReactiveUI.Binding.SourceGenerators.Tests; + +/// +/// Covers the analyzer and code fix that move the [ObservableAsProperty] forms of ReactiveUI's older source +/// generator (a field, a method, an observable property) onto partial properties. +/// +public class ObservableAsPropertyMigrationTests +{ + /// The diagnostic reported for a member the generator writes nothing for. + private const string NeedsPartialProperty = "RXUIBIND018"; + + /// The diagnostic reported for a marked method that takes parameters. + private const string MethodHasParameters = "RXUIBIND019"; + + /// Splitting text on something that appears once gives this many parts. + private const int PartsForOneOccurrence = 2; + + /// A source whose values a test pushes by hand. + private const string SourceType = """ + namespace TestApp + { + public sealed class Source : System.IObservable + { + private System.IObserver? _observer; + + public System.IDisposable Subscribe(System.IObserver observer) + { + _observer = observer; + return new Nothing(); + } + + public void Push(T value) => _observer!.OnNext(value); + + private sealed class Nothing : System.IDisposable + { + public void Dispose() + { + } + } + } + } + """; + + /// Every field shape ReactiveUI.SourceGenerators' own tests covered, in plain, generic and nested types. + private const string FieldForms = """ + using System; + using System.Collections.Generic; + using System.ComponentModel; + using ReactiveUI.Binding; + + namespace TestApp + { + public record Point(int X, int Y); + + public partial class FieldViewModel : INotifyPropertyChanged + { + public FieldViewModel(Source counts, Source codes) + { + _countHelper = counts.ToProperty(this, x => x.Count); + m_codeHelper = codes.ToProperty(this, x => x.Code); + } + + public event PropertyChangedEventHandler? PropertyChanged; + + public string Shout => m_code.ToUpperInvariant(); + + [ObservableAsProperty] private int _count = 10; + [ObservableAsProperty] private string _title = "start"; + [ObservableAsProperty] private int[] _values = new[] { 1, 2 }; + [ObservableAsProperty] private (int Id, string Name) _pair = (1, "one"); + [ObservableAsProperty] private Func? _factory; + [ObservableAsProperty] private DayOfWeek _day = DayOfWeek.Monday; + [ObservableAsProperty] private List _names = new List(); + [ObservableAsProperty] private int? _maybe; + [ObservableAsProperty] private DateTimeOffset _when; + [ObservableAsProperty] private TimeSpan _span = TimeSpan.FromSeconds(1); + [ObservableAsProperty] private Point _point = new Point(1, 2); + [ObservableAsProperty(UseProtected = true)] private string m_code = "c"; + } + + public partial class Holder : INotifyPropertyChanged + { + public event PropertyChangedEventHandler? PropertyChanged; + + [ObservableAsProperty] private T _current = default!; + } + + public class Level1 + { + public class Level2 + { + public class Level3 : INotifyPropertyChanged + { + public event PropertyChangedEventHandler? PropertyChanged; + + [ObservableAsProperty] private int _depth = 3; + } + } + } + + public static class Usage + { + public static string Run() + { + var counts = new Source(); + var codes = new Source(); + var model = new FieldViewModel(counts, codes); + if (model.Title != "start") return "string"; + if (model.Values.Length != 2) return "array"; + if (model.Pair.Name != "one") return "tuple"; + if (model.Factory != null) return "delegate"; + if (model.Day != DayOfWeek.Monday) return "enum"; + if (model.Names.Count != 0) return "generic"; + if (model.Maybe != null) return "nullable"; + if (model.When != default(DateTimeOffset)) return "time"; + if (model.Span != TimeSpan.FromSeconds(1)) return "span"; + if (model.Point != new Point(1, 2)) return "record"; + counts.Push(5); + codes.Push("z"); + if (model.Count != 5) return "count"; + if (model.Code != "z" || model.Shout != "Z") return "prefixed field"; + if (new Holder().Current != 0) return "generic class"; + if (new Level1.Level2.Level3().Depth != 3) return "nested"; + return string.Empty; + } + } + } + """; + + /// A method and an observable property, built into properties by the generated InitializeOAPH. + private const string SourceForms = """ + using System; + using System.ComponentModel; + using ReactiveUI.Binding; + + namespace TestApp + { + public partial class SourceViewModel : INotifyPropertyChanged + { + private readonly Source _names; + private readonly Source _counts; + + public SourceViewModel(Source names, Source counts) + { + _names = names; + _counts = counts; + InitializeOAPH(); + } + + public event PropertyChangedEventHandler? PropertyChanged; + + /// The names. + [ObservableAsProperty(InitialValue = "none", ReadOnly = true)] + [property: System.ComponentModel.Description("shown")] + public IObservable Name() => _names; + + [ObservableAsProperty(PropertyName = "Total")] + public IObservable Counts => _counts; + } + + public static class Usage + { + public static string Run() + { + var names = new Source(); + var counts = new Source(); + var model = new SourceViewModel(names, counts); + string? seen = null; + using var subscription = global::ReactiveUI.Primitives.SubscribeExtensions.Subscribe( + model.WhenAnyValue(x => x.NameProperty), + value => seen = value); + names.Push("Ada"); + counts.Push(3); + if (model.NameProperty != "Ada" || seen != "Ada") return "method"; + if (model.Total != 3) return "observable property"; + return string.Empty; + } + } + } + """; + + /// The analyzer names the form of each member the generator writes nothing for, so the fix knows how to rewrite it. + /// A task representing the asynchronous test operation. + [Test] + public async Task Analyzer_ReportsEachFormItCannotGenerate() + { + const string Source = """ + using System; + using System.ComponentModel; + using ReactiveUI.Binding; + + namespace TestApp + { + public partial class Mixed : INotifyPropertyChanged + { + public event PropertyChangedEventHandler? PropertyChanged; + + [ObservableAsProperty] private int _field; + [ObservableAsProperty] private static int _staticField; + [ObservableAsProperty] public IObservable Method() => null!; + [ObservableAsProperty] public IObservable WithArgument(int value) => null!; + [ObservableAsProperty] public int NotObservable() => 0; + [ObservableAsProperty] public static IObservable StaticMethod() => null!; + [ObservableAsProperty] public IObservable Stream => null!; + [ObservableAsProperty] public int Plain { get; } = 0; + [ObservableAsProperty] public partial int Generated { get; } + [ObservableAsProperty] public static partial int StaticPartial { get; } + } + } + """; + + var diagnostics = await CodeFixRunner.AnalyzeAsync(Source, LanguageVersion.CSharp13); + var reported = diagnostics + .Select(static d => $"{d.Id} {d.GetMessage().Split('\'')[1]} {(d.Properties.TryGetValue("Form", out var form) ? form : "-")}") + .ToArray(); + + await Assert.That(reported).IsEquivalentTo( + [ + $"{NeedsPartialProperty} _field Field", + $"{NeedsPartialProperty} _staticField -", + $"{NeedsPartialProperty} Method Method", + $"{MethodHasParameters} WithArgument -", + $"{NeedsPartialProperty} NotObservable -", + $"{NeedsPartialProperty} StaticMethod -", + $"{NeedsPartialProperty} Stream ObservableProperty", + $"{NeedsPartialProperty} Plain -", + $"{NeedsPartialProperty} StaticPartial -", + ]); + } + + /// + /// The System.Reactive flavour's attribute is recognised among a member's other attributes, and a project that + /// references neither runtime is not analysed. + /// + /// A task representing the asynchronous test operation. + [Test] + public async Task Analyzer_RecognisesEitherFlavour() + { + const string Source = """ + using System; + using ReactiveUI.Binding.Reactive; + + namespace TestApp + { + public partial class Reactive + { + [Obsolete] + [ObservableAsProperty] + private int _field; + } + } + """; + + var reactive = await CodeFixRunner.AnalyzeAsync(Source, LanguageVersion.CSharp13, CodeFixRunner.Runtime.Reactive); + var none = await CodeFixRunner.AnalyzeAsync(Source, LanguageVersion.CSharp13, CodeFixRunner.Runtime.None); + + await Assert.That(reactive.Select(static d => d.Id)).IsEquivalentTo([NeedsPartialProperty]); + await Assert.That(none).IsEmpty(); + } + + /// + /// A type holding every kind of member is rewritten where the fix applies and left alone elsewhere: a partial + /// property, other members, a method's own attributes, a positional argument and Inheritance = None. + /// + /// A task representing the asynchronous test operation. + [Test] + public async Task Fix_LeavesWhatItDoesNotRewrite() + { + const string Source = """ + using System; + using ReactiveUI.Binding; + + namespace TestApp + { + public partial class Mixed + { + [ObservableAsProperty] public partial int Generated { get; } + [ObservableAsProperty] public static IObservable StaticStream => null!; + public int Plain { get; set; } + public void Work() { } + [Obsolete, ObservableAsProperty] public IObservable Ticks() => null!; + [ObservableAsProperty(Inheritance = ObservableAsPropertyInheritance.None)] private int _none; + [ObservableAsProperty("positional", ReadOnly = true)] private int _odd; + } + } + """; + + var fixedSource = await CodeFixRunner.FixFirstAsync(Source, LanguageVersion.CSharp13); + await Assert.That(fixedSource!).Contains("[ObservableAsProperty] public partial int Generated { get; }"); + await Assert.That(fixedSource!).Contains("[ObservableAsProperty] public static IObservable StaticStream => null!;"); + await Assert.That(fixedSource!).Contains("[Obsolete] public IObservable Ticks() => null!;"); + await Assert.That(fixedSource!).Contains("public partial int None { get; }"); + await Assert.That(fixedSource!).Contains("[ObservableAsProperty(ReadOnly = true)]"); + await Assert.That(fixedSource!).Contains("public partial int Odd { get; }"); + } + + /// A method and an observable property keep their declarations, gain a property each, and are assigned in InitializeOAPH. + /// A task representing the asynchronous test operation. + [Test] + public async Task Fix_RewritesSourceForms() + { + const string Expected = """ + using System; + using System.ComponentModel; + using ReactiveUI.Binding; + + namespace TestApp + { + public partial class SourceViewModel : INotifyPropertyChanged + { + private readonly Source _names; + private readonly Source _counts; + + public SourceViewModel(Source names, Source counts) + { + _names = names; + _counts = counts; + InitializeOAPH(); + } + + public event PropertyChangedEventHandler? PropertyChanged; + + /// The names. + public IObservable Name() => _names; + + [ObservableAsProperty(InitialValue = "none")] + [System.ComponentModel.Description("shown")] + public partial string NameProperty { get; } + + public IObservable Counts => _counts; + + [ObservableAsProperty] + public partial int Total { get; } + + /// Assigns the helpers of the properties built from observables. Call it from the constructor. + protected void InitializeOAPH() + { + _namePropertyHelper = Name().ToProperty(this, nameof(NameProperty)); + _totalHelper = Counts.ToProperty(this, nameof(Total)); + } + } + } + """; + + var fixedSource = await CodeFixRunner.FixFirstAsync(ClassOnly(SourceForms), LanguageVersion.CSharp13); + await Assert.That(fixedSource).IsEqualTo(Expected); + } + + /// + /// Every field shape compiles once rewritten and keeps its value: the initializer is returned until the helper is + /// assigned, and the helper then supplies each value. A type the fix writes into, and the types around it, become partial. + /// + /// A task representing the asynchronous test operation. + [Test] + public async Task FixAll_FieldForms_CompileAndKeepTheirValues() + { + var fixedSource = await CodeFixRunner.FixAllAsync($"{FieldForms}\n{SourceType}", LanguageVersion.CSharp13); + await Assert.That(fixedSource).IsNotNull(); + await Assert.That(fixedSource!).Contains("public partial class Level1"); + await Assert.That(fixedSource!).Contains("public string Shout => Code.ToUpperInvariant();"); + await Assert.That(fixedSource!).Contains("_codeHelper = codes.ToProperty(this, x => x.Code);"); + await AssertRuns(fixedSource!); + } + + /// A method and an observable property run through InitializeOAPH, and WhenAnyValue observes the property. + /// A task representing the asynchronous test operation. + [Test] + public async Task Fix_SourceForms_RunThroughInitializeOAPH() + { + var fixedSource = await CodeFixRunner.FixFirstAsync($"{SourceForms}\n{SourceType}", LanguageVersion.CSharp13); + await AssertRuns(fixedSource!); + } + + /// Partial properties need C# 13, so the fix is not offered below it. + /// A task representing the asynchronous test operation. + [Test] + public async Task Fix_NotOfferedBelowCSharp13() + { + var fixedSource = await CodeFixRunner.FixFirstAsync(FieldForms, LanguageVersion.CSharp12); + await Assert.That(fixedSource).IsNull(); + } + + /// + /// The field's Inheritance becomes a modifier, whichever enum names it; a string field set to something other + /// than a literal is left alone; and an existing InitializeOAPH gains the new assignment. + /// + /// A task representing the asynchronous test operation. + [Test] + public async Task Fix_InheritanceComputedStringAndExistingInitializer() + { + const string Source = """ + using System; + using ReactiveUI.Binding; + + namespace TestApp + { + public partial class Derived : Base + { + [ObservableAsProperty(Inheritance = ObservableAsPropertyInheritance.Virtual)] private int _a; + [ObservableAsProperty(Inheritance = ObservableAsPropertyInheritance.Override)] private int _b; + [ObservableAsProperty(Inheritance = InheritanceModifier.New)] private int _c; + [ObservableAsProperty] private string _computed = Environment.NewLine; + [ObservableAsProperty] private int _x, _y; + [ObservableAsProperty] private int _; + [ObservableAsProperty] private int Upper; + [ObservableAsProperty] public IObservable Ticks() => null!; + + protected void InitializeOAPH() + { + } + } + } + """; + + var fixedSource = await CodeFixRunner.FixFirstAsync(Source, LanguageVersion.CSharp13); + await Assert.That(fixedSource!).Contains("public virtual partial int A { get; }"); + await Assert.That(fixedSource!).Contains("public override partial int B { get; }"); + await Assert.That(fixedSource!).Contains("public new partial int C { get; }"); + await Assert.That(fixedSource!).Contains("private string _computed = Environment.NewLine;"); + await Assert.That(fixedSource!).Contains("private int _x, _y;"); + await Assert.That(fixedSource!).Contains("private int _;"); + await Assert.That(fixedSource!).Contains("private int Upper;"); + await Assert.That(fixedSource!).Contains(" _ticksPropertyHelper = Ticks().ToProperty(this, nameof(TicksProperty));\n }"); + await Assert.That(fixedSource!.Split("InitializeOAPH()").Length).IsEqualTo(PartsForOneOccurrence); + } + + /// A type with no modifiers becomes partial, and a document written on one line keeps working. + /// A task representing the asynchronous test operation. + [Test] + public async Task Fix_TypeWithoutModifiersOnOneLine() + { + const string Source = "namespace TestApp { class Bare { [ReactiveUI.Binding.ObservableAsProperty] int _size; } }"; + + var fixedSource = await CodeFixRunner.FixFirstAsync(Source, LanguageVersion.CSharp13); + await Assert.That(fixedSource!).Contains("partial class Bare"); + await Assert.That(fixedSource!).Contains("public partial int Size { get; }"); + } + + /// Fix-all leaves the document unchanged when no diagnostic in it names a form it rewrites. + /// A task representing the asynchronous test operation. + [Test] + public async Task FixAll_NothingToRewrite() + { + const string Source = """ + using ReactiveUI.Binding; + + namespace TestApp + { + public partial class Settings + { + [ObservableAsProperty] private static int _count; + } + } + """; + + var fixedSource = await CodeFixRunner.FixAllAsync(Source, LanguageVersion.CSharp13); + await Assert.That(fixedSource ?? Source).IsEqualTo(Source); + } + + /// Removes the usage class, whose calls the expected text of a rewrite does not need. + /// The source forms. + /// The source without its usage class. + private static string ClassOnly(string source) + { + var start = source.IndexOf("\n public static class Usage", StringComparison.Ordinal); + var end = source.LastIndexOf('}'); + return $"{source[..start]}{source[end..]}"; + } + + /// Generates from a fixed source, compiles it, and checks its usage returns no failure. + /// The fixed source. + /// A task representing the asynchronous assertion. + private static async Task AssertRuns(string fixedSource) + { + var result = TestHelper.RunGenerator(fixedSource, LanguageVersion.CSharp13); + await result.CompilationSucceeds(); + var (assembly, context) = TestHelper.EmitAndLoad(result); + try + { + var run = assembly.GetType("TestApp.Usage")!.GetMethod("Run", BindingFlags.Public | BindingFlags.Static)!; + await Assert.That((string)run.Invoke(null, null)!).IsEqualTo(string.Empty); + } + finally + { + context.Unload(); + } + } +} diff --git a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ReactiveUI.Binding.SourceGenerators.Tests.csproj b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ReactiveUI.Binding.SourceGenerators.Tests.csproj index 9b60dd80..bfda0e1e 100644 --- a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ReactiveUI.Binding.SourceGenerators.Tests.csproj +++ b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ReactiveUI.Binding.SourceGenerators.Tests.csproj @@ -9,6 +9,7 @@ + @@ -21,6 +22,9 @@ + + diff --git a/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ViewRegistrationCompatibilityTests.cs b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ViewRegistrationCompatibilityTests.cs new file mode 100644 index 00000000..d727146c --- /dev/null +++ b/src/tests/ReactiveUI.Binding.SourceGenerators.Tests/ViewRegistrationCompatibilityTests.cs @@ -0,0 +1,356 @@ +// Copyright (c) 2019-2026 ReactiveUI and Contributors. All rights reserved. +// ReactiveUI and Contributors licenses this file to you under the MIT license. +// See the LICENSE file in the project root for full license information. + +using System.Reflection; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using ReactiveUI.Binding.SourceGenerators.Tests.Helpers; + +namespace ReactiveUI.Binding.SourceGenerators.Tests; + +/// +/// Covers finding views through ReactiveUI.SourceGenerators' [IViewFor], whose IViewFor<T> another +/// generator adds, and finding views in a System.Reactive consumer. +/// +public class ViewRegistrationCompatibilityTests +{ + /// The hint name of the generated view dispatch file. + private const string DispatchHintName = "ViewDispatch.g.cs"; + + /// The attributes ReactiveUI.SourceGenerators declares into each consumer, internal to it. + private const string SourceGeneratorsAttributes = """ + namespace ReactiveUI.SourceGenerators + { + internal enum SplatRegistrationType + { + None = 0, + LazySingleton = 1, + Constant = 2, + PerRequest = 3, + } + + [System.AttributeUsage(System.AttributeTargets.Class)] + internal sealed class IViewForAttribute : System.Attribute + { + public string Label { get; set; } + + public SplatRegistrationType RegistrationType { get; set; } + } + + [System.AttributeUsage(System.AttributeTargets.Class)] + internal sealed class IViewForAttribute : System.Attribute + { + public IViewForAttribute(string viewModelType) + { + } + + public SplatRegistrationType RegistrationType { get; set; } + } + } + """; + + /// Views declared only through [IViewFor], each naming its view model a different way. + private const string AttributeViews = """ + using ReactiveUI.Binding; + using ReactiveUI.SourceGenerators; + + namespace TestApp + { + public class Vm1 { } + public class Vm2 { } + public class Vm3 { } + public class Gen { } + public class Vm5 { } + public class Vm6 { } + public class Vm7 { } + public class Vm8 { } + public class Vm9 { } + public class Vm10 { } + public class Vm11 { } + public class Vm12 { } + public class Vm13 { } + public class Vm14 { } + + public abstract class ViewBase : IViewFor + where T : class + { + public T ViewModel { get; set; } + + object IViewFor.ViewModel + { + get => ViewModel; + set => ViewModel = (T)value; + } + } + + [IViewFor] public partial class View1 { } + [IViewFor("TestApp.Vm2")] public partial class View2 { } + [IViewFor(nameof(Vm3))] public partial class View3 { } + [IViewFor("Gen")] public partial class View4 { } + public partial class Outer { [IViewFor] public partial class View5 { } } + [IViewFor(RegistrationType = SplatRegistrationType.LazySingleton)] public partial class View6 { } + [ViewContract("wide")] [IViewFor] public partial class View7 { } + [ExcludeFromViewRegistration] [IViewFor] public partial class View8 { } + [IViewFor] public partial class Plain9 { } + [IViewFor(RegistrationType = SplatRegistrationType.Constant)] public partial class View10 { } + [IViewFor(RegistrationType = SplatRegistrationType.PerRequest)] public partial class View11 { } + [IViewFor(Label = "other")] public partial class View12 { } + [IViewFor] public abstract partial class AbstractView13 { } + [IViewFor] public partial class GenericView14 { } + + public static class Usage + { + public static string Run() + { + var locator = new DefaultViewLocator(); + if (!(locator.ResolveView(new Vm1(), null) is View1)) return "generic"; + if (!(locator.ResolveView(new Vm2(), null) is View2)) return "qualified name"; + if (!(locator.ResolveView(new Vm3(), null) is View3)) return "nameof"; + if (!(locator.ResolveView(new Gen(), null) is View4)) return "generic name"; + if (!(locator.ResolveView(new Vm5(), null) is Outer.View5)) return "nested"; + var first = locator.ResolveView(new Vm6(), null); + if (!(first is View6) || !ReferenceEquals(first, locator.ResolveView(new Vm6(), null))) return "lazy singleton"; + if (!(locator.ResolveView(new Vm7(), "wide") is View7) || locator.ResolveView(new Vm7(), null) != null) return "contract"; + if (locator.ResolveView(new Vm8(), null) != null) return "excluded"; + if (locator.ResolveView(new Vm9(), null) != null) return "no interface"; + var constant = locator.ResolveView(new Vm10(), null); + if (!(constant is View10) || !ReferenceEquals(constant, locator.ResolveView(new Vm10(), null))) return "constant"; + var perRequest = locator.ResolveView(new Vm11(), null); + if (!(perRequest is View11) || ReferenceEquals(perRequest, locator.ResolveView(new Vm11(), null))) return "per request"; + if (!(locator.ResolveView(new Vm12(), null) is View12)) return "other argument"; + if (locator.ResolveView(new Vm13(), null) != null || locator.ResolveView(new Vm14(), null) != null) return "abstract or generic"; + return string.Empty; + } + } + } + """; + + /// + /// What ReactiveUI.SourceGenerators adds to the views above, except Plain9, whose base it does not support. + /// The views reach IViewFor<T> through ViewBase<T>, an open generic nothing registers itself. + /// + private const string AddedInterfaces = """ + namespace TestApp + { + public partial class View1 : ViewBase { } + public partial class View2 : ViewBase { } + public partial class View3 : ViewBase { } + public partial class View4 : ViewBase> { } + public partial class Outer { public partial class View5 : ViewBase { } } + public partial class View6 : ViewBase { } + public partial class View7 : ViewBase { } + public partial class View8 : ViewBase { } + public partial class View10 : ViewBase { } + public partial class View11 : ViewBase { } + public partial class View12 : ViewBase { } + } + """; + + /// Splitting a dispatch file on a view model's type test gives this many parts when the test appears once. + private const int PartsForOneBranch = 2; + + /// + /// A view declared only through [IViewFor] resolves once the other generator has added its interface, however + /// the attribute names the view model. Contracts, exclusion and single instances apply, and a class the other + /// generator left alone compiles and resolves to null. + /// + /// A task representing the asynchronous test operation. + [Test] + public async Task AttributeViews_ResolveOnceTheOtherGeneratorAddsTheInterface() + { + var parseOptions = TestHelper.ParseOptionsFor(LanguageVersion.CSharp11); + var compilation = TestHelper.CreateCompilation($"{AttributeViews}\n{SourceGeneratorsAttributes}", parseOptions, false, "TestAssembly", []); + GeneratorDriver driver = CSharpGeneratorDriver.Create( + [new BindingGenerator().AsSourceGenerator(), new InterfaceAddingGenerator(AddedInterfaces).AsSourceGenerator()], + null, + parseOptions); + driver = driver.RunGeneratorsAndUpdateCompilation(compilation, out var output, out var diagnostics); + var result = new GeneratorTestResult(driver, output, diagnostics); + + await result.CompilationSucceeds(); + await result.GeneratedSourceContains(DispatchHintName, "(object)new global::TestApp.Plain9() as global::ReactiveUI.Binding.IViewFor"); + + var (assembly, context) = TestHelper.EmitAndLoad(result, true); + try + { + var run = assembly.GetType("TestApp.Usage")!.GetMethod("Run", BindingFlags.Public | BindingFlags.Static)!; + await Assert.That((string)run.Invoke(null, null)!).IsEqualTo(string.Empty); + } + finally + { + context.Unload(); + } + } + + /// A view that implements IViewFor<T> itself and also carries [IViewFor] is registered once. + /// A task representing the asynchronous test operation. + [Test] + public async Task InterfaceAndAttribute_RegisterTheViewOnce() + { + const string Source = """ + using ReactiveUI.Binding; + using ReactiveUI.SourceGenerators; + + namespace TestApp + { + public class PanelViewModel { } + + [IViewFor] + public partial class PanelView : IViewFor + { + public PanelViewModel ViewModel { get; set; } + + object IViewFor.ViewModel + { + get => ViewModel; + set => ViewModel = (PanelViewModel)value; + } + } + } + """; + + var result = TestHelper.RunGenerator($"{Source}\n{SourceGeneratorsAttributes}", LanguageVersion.CSharp11); + await result.CompilationSucceeds(); + var dispatch = result.GeneratedSources[DispatchHintName]; + await Assert.That(dispatch.Split("instance is global::TestApp.PanelViewModel").Length).IsEqualTo(PartsForOneBranch); + await Assert.That(dispatch).DoesNotContain("(object)new global::TestApp.PanelView()"); + } + + /// An [IViewFor] naming a type that does not exist, or no type, registers nothing. + /// A task representing the asynchronous test operation. + [Test] + public async Task UnresolvableViewModel_RegistersNothing() + { + const string Source = """ + using ReactiveUI.SourceGenerators; + + namespace TestApp + { + [IViewFor("TestApp.Missing")] public partial class MissingView { } + [IViewFor("")] public partial class EmptyView { } + } + """; + + var result = TestHelper.RunGenerator($"{Source}\n{SourceGeneratorsAttributes}", LanguageVersion.CSharp11); + await result.DoesNotHaveGeneratedSource(DispatchHintName); + } + + /// A System.Reactive consumer's views are registered, through that flavour's interface and attributes. + /// A task representing the asynchronous test operation. + [Test] + public async Task ReactiveRuntime_RegistersViews() + { + const string Source = """ + using ReactiveUI.Binding.Reactive; + + namespace ReactiveApp + { + public class ReactiveDashboardViewModel { } + + public class ReactiveDashboardView : IViewFor + { + public ReactiveDashboardViewModel ViewModel { get; set; } + + object IViewFor.ViewModel + { + get => ViewModel; + set => ViewModel = (ReactiveDashboardViewModel)value; + } + } + + [ViewContract("compact")] + public class ReactiveCompactDashboardView : IViewFor + { + public ReactiveDashboardViewModel ViewModel { get; set; } + + object IViewFor.ViewModel + { + get => ViewModel; + set => ViewModel = (ReactiveDashboardViewModel)value; + } + } + + public static class Usage + { + public static bool Run() + { + var locator = new DefaultViewLocator(); + return locator.ResolveView(new ReactiveDashboardViewModel(), null) is ReactiveDashboardView + && locator.ResolveView(new ReactiveDashboardViewModel(), "compact") is ReactiveCompactDashboardView; + } + } + } + """; + + var result = TestHelper.RunGenerator(Source, LanguageVersion.CSharp10, null, true); + await result.CompilationSucceeds(); + await result.GeneratedSourceContains(DispatchHintName, "global::ReactiveUI.Binding.Reactive.DefaultViewLocator.SetGeneratedViewDispatch("); + + var (assembly, context) = TestHelper.EmitAndLoad(result); + try + { + var run = assembly.GetType("ReactiveApp.Usage")!.GetMethod("Run", BindingFlags.Public | BindingFlags.Static)!; + await Assert.That((bool)run.Invoke(null, null)!).IsTrue(); + } + finally + { + context.Unload(); + } + } + + /// An [IViewFor] view in a System.Reactive consumer is checked against that flavour's interface. + /// A task representing the asynchronous test operation. + [Test] + public async Task ReactiveRuntime_AttributeViewUsesThatFlavour() + { + const string Source = """ + using ReactiveUI.SourceGenerators; + + namespace ReactiveApp + { + public class ReactivePanelViewModel { } + + [IViewFor] public partial class ReactivePanelView { } + } + """; + + var result = TestHelper.RunGenerator($"{Source}\n{SourceGeneratorsAttributes}", LanguageVersion.CSharp11, null, true); + await result.CompilationSucceeds(); + await result.GeneratedSourceContains(DispatchHintName, "(object)new global::ReactiveApp.ReactivePanelView() as global::ReactiveUI.Binding.Reactive.IViewFor"); + } + + /// A compilation that references neither runtime registers no views, whether declared by interface or attribute. + /// A task representing the asynchronous test operation. + [Test] + public async Task NoRuntime_RegistersNothing() + { + const string Source = """ + using ReactiveUI.SourceGenerators; + + namespace TestApp + { + public class PanelViewModel { } + + public interface IPanel { } + + [IViewFor] public partial class PanelView : IPanel { } + } + """; + + var compilation = TestHelper.CreateCompilation($"{Source}\n{SourceGeneratorsAttributes}", LanguageVersion.CSharp11); + compilation = compilation.RemoveReferences(compilation.References.Where(static r => r.Display?.Contains("ReactiveUI.Binding", StringComparison.Ordinal) == true)); + var result = TestHelper.RunGenerator(compilation, LanguageVersion.CSharp11, null, true); + await result.DoesNotHaveGeneratedSource(DispatchHintName); + } + + /// Stands in for ReactiveUI.SourceGenerators: adds fixed source that no other generator in the run can see. + /// The source to add. + private sealed class InterfaceAddingGenerator(string source) : IIncrementalGenerator + { + /// + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] + public void Initialize(IncrementalGeneratorInitializationContext context) => + context.RegisterSourceOutput(context.CompilationProvider, (output, _) => output.AddSource("AddedInterfaces.g.cs", source)); + } +}