diff --git a/.editorconfig b/.editorconfig
index 8a7cddf7..3a2d4f8e 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -29,9 +29,13 @@ csharp_new_line_between_query_expression_clauses = true
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
+csharp_indent_case_contents_when_block = true
csharp_indent_switch_labels = true
csharp_indent_labels = one_less_than_current
+# Modifier preferences
+csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion
+
# avoid this. unless absolutely necessary
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
@@ -40,10 +44,13 @@ dotnet_style_qualification_for_event = false:suggestion
# only use var when it's obvious what the variable type is
csharp_style_var_for_built_in_types = false:none
-csharp_style_var_when_type_is_apparent = false:suggestion
-csharp_style_var_elsewhere = false:suggestion
+csharp_style_var_when_type_is_apparent = true:suggestion
+csharp_style_var_elsewhere = true:suggestion
-# use language keywords instead of BCL types
+# Types: use keywords instead of BCL types, and permit var only when the type is clear
+csharp_style_var_for_built_in_types = false:suggestion
+csharp_style_var_when_type_is_apparent = false:none
+csharp_style_var_elsewhere = false:suggestion
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion
@@ -51,33 +58,42 @@ dotnet_style_predefined_type_for_member_access = true:suggestion
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
-
dotnet_naming_symbols.constant_fields.applicable_kinds = field
dotnet_naming_symbols.constant_fields.required_modifiers = const
-
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
# static fields should have s_ prefix
+dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion
+dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields
+dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style
dotnet_naming_symbols.static_fields.applicable_kinds = field
dotnet_naming_symbols.static_fields.required_modifiers = static
-
-dotnet_naming_style.static_prefix_style.capitalization = camel_case
+dotnet_naming_symbols.static_fields.applicable_accessibilities = private, internal, private_protected
+dotnet_naming_style.static_prefix_style.required_prefix = s_
+dotnet_naming_style.static_prefix_style.capitalization = camel_case
# internal and private fields should be _camelCase
dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields
dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style
-
dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal
-
dotnet_naming_style.camel_case_underscore_style.required_prefix = _
-dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case
+dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case
# Code style defaults
+csharp_using_directive_placement = outside_namespace:suggestion
dotnet_sort_system_directives_first = true
-csharp_preserve_single_line_blocks = true
-csharp_preserve_single_line_statements = false
+csharp_prefer_braces = true:silent
+csharp_preserve_single_line_blocks = true:none
+csharp_preserve_single_line_statements = false:none
+csharp_prefer_static_local_function = true:suggestion
+csharp_prefer_simple_using_statement = false:none
+csharp_style_prefer_switch_expression = true:suggestion
+
+# Code quality
+dotnet_style_readonly_field = true:suggestion
+dotnet_code_quality_unused_parameters = non_public:suggestion
# Expression-level preferences
dotnet_style_object_initializer = true:suggestion
@@ -85,14 +101,23 @@ dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
+dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
+dotnet_style_prefer_inferred_tuple_names = true:suggestion
+dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
+dotnet_style_prefer_auto_properties = true:suggestion
+dotnet_style_prefer_conditional_expression_over_assignment = true:silent
+dotnet_style_prefer_conditional_expression_over_return = true:silent
+csharp_prefer_simple_default_expression = true:suggestion
# Expression-bodied members
-csharp_style_expression_bodied_methods = false:none
-csharp_style_expression_bodied_constructors = false:none
-csharp_style_expression_bodied_operators = false:none
+csharp_style_expression_bodied_methods = true:suggestion
+csharp_style_expression_bodied_constructors = true:suggestion
+csharp_style_expression_bodied_operators = true:suggestion
csharp_style_expression_bodied_properties = true:suggestion
-csharp_style_expression_bodied_indexers = true:none
-csharp_style_expression_bodied_accessors = true:none
+csharp_style_expression_bodied_indexers = true:suggestion
+csharp_style_expression_bodied_accessors = true:suggestion
+csharp_style_expression_bodied_lambdas = true:suggestion
+csharp_style_expression_bodied_local_functions = true:suggestion
# Pattern matching
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
@@ -103,6 +128,11 @@ csharp_style_inlined_variable_declaration = true:suggestion
csharp_style_throw_expression = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion
+# Other features
+csharp_style_prefer_index_operator = false:none
+csharp_style_prefer_range_operator = false:none
+csharp_style_pattern_local_over_anonymous_function = false:none
+
# Space preferences
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
@@ -152,4 +182,4 @@ indent_size = 2
[*.sh]
end_of_line = lf
[*.{cmd, bat}]
-end_of_line = crlf
\ No newline at end of file
+end_of_line = crlf
diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml
index cce84afd..20385cdd 100644
--- a/.github/workflows/ci-build.yml
+++ b/.github/workflows/ci-build.yml
@@ -22,11 +22,23 @@ jobs:
with:
fetch-depth: 0
- - name: Install .NET Core
+ - name: Install .NET Core 3.1.x
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.x
+ - name: Install .NET 5.0.x
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: 5.0.x
+
+ - name: Add MSBuild to PATH
+ uses: glennawatson/setup-msbuild@v1.0.3
+
+ - name: Update VS2019
+ shell: powershell
+ run: Start-Process -Wait -PassThru -FilePath "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList "update --passive --norestart --installpath ""C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise"""
+
- name: NBGV
id: nbgv
uses: dotnet/nbgv@master
@@ -36,9 +48,6 @@ jobs:
- name: NuGet Restore
run: dotnet restore
working-directory: src
-
- - name: Add MSBuild to PATH
- uses: microsoft/setup-msbuild@v1
- name: Build
run: msbuild /t:build,pack /maxcpucount /p:NoPackageAnalysis=true /verbosity:minimal /p:Configuration=${{ env.configuration }}
diff --git a/src/Directory.build.props b/src/Directory.build.props
index c8b28384..4e85d185 100644
--- a/src/Directory.build.props
+++ b/src/Directory.build.props
@@ -39,7 +39,7 @@
-
+
diff --git a/src/ReactiveUI.Validation.AndroidSupport/ReactiveUI.Validation.AndroidSupport.csproj b/src/ReactiveUI.Validation.AndroidSupport/ReactiveUI.Validation.AndroidSupport.csproj
index 7294354e..6dd1c76c 100644
--- a/src/ReactiveUI.Validation.AndroidSupport/ReactiveUI.Validation.AndroidSupport.csproj
+++ b/src/ReactiveUI.Validation.AndroidSupport/ReactiveUI.Validation.AndroidSupport.csproj
@@ -1,7 +1,7 @@
- MonoAndroid90
+ MonoAndroid10.0
Provides ReactiveUI.Validation extensions for the Android Support Library
ReactiveUI.Validation.AndroidSupport
$(NoWarn);CS1591
@@ -11,8 +11,8 @@
-
-
+
+
diff --git a/src/ReactiveUI.Validation.AndroidX/ReactiveUI.Validation.AndroidX.csproj b/src/ReactiveUI.Validation.AndroidX/ReactiveUI.Validation.AndroidX.csproj
index 522716eb..df17d395 100644
--- a/src/ReactiveUI.Validation.AndroidX/ReactiveUI.Validation.AndroidX.csproj
+++ b/src/ReactiveUI.Validation.AndroidX/ReactiveUI.Validation.AndroidX.csproj
@@ -1,7 +1,7 @@
- MonoAndroid90
+ MonoAndroid10.0
Provides ReactiveUI.Validation extensions for the AndroidX Library
ReactiveUI.Validation.AndroidX
$(NoWarn);CS1591
@@ -11,8 +11,8 @@
-
-
+
+
diff --git a/src/ReactiveUI.Validation.Tests/API/ApiApprovalTests.ValidationProject.net461.approved.txt b/src/ReactiveUI.Validation.Tests/API/ApiApprovalTests.ValidationProject.net461.approved.txt
new file mode 100644
index 00000000..9edf829f
--- /dev/null
+++ b/src/ReactiveUI.Validation.Tests/API/ApiApprovalTests.ValidationProject.net461.approved.txt
@@ -0,0 +1,303 @@
+[assembly: System.Reflection.AssemblyMetadata("RepositoryUrl", "https://github.com/reactiveui/reactiveui.validation")]
+[assembly: System.Runtime.Versioning.TargetFramework(".NETFramework,Version=v4.6.1", FrameworkDisplayName=".NET Framework 4.6.1")]
+namespace ReactiveUI.Validation.Abstractions
+{
+ public interface IValidatableViewModel
+ {
+ ReactiveUI.Validation.Contexts.ValidationContext ValidationContext { get; }
+ }
+}
+namespace ReactiveUI.Validation.Collections
+{
+ public class ValidationText : System.Collections.Generic.IEnumerable, System.Collections.IEnumerable
+ {
+ public static readonly ReactiveUI.Validation.Collections.ValidationText Empty;
+ public static readonly ReactiveUI.Validation.Collections.ValidationText None;
+ public int Count { get; }
+ public string this[int index] { get; }
+ public System.Collections.Generic.IEnumerator GetEnumerator() { }
+ public string ToSingleLine(string? separator = ",") { }
+ public static ReactiveUI.Validation.Collections.ValidationText Create(System.Collections.Generic.IEnumerable validationTexts) { }
+ public static ReactiveUI.Validation.Collections.ValidationText Create(System.Collections.Generic.IEnumerable validationTexts) { }
+ public static ReactiveUI.Validation.Collections.ValidationText Create(params string[] validationTexts) { }
+ }
+}
+namespace ReactiveUI.Validation.Comparators
+{
+ public class ValidationStateComparer : System.Collections.Generic.EqualityComparer
+ {
+ public ValidationStateComparer() { }
+ public override bool Equals(ReactiveUI.Validation.States.IValidationState x, ReactiveUI.Validation.States.IValidationState y) { }
+ public override int GetHashCode(ReactiveUI.Validation.States.IValidationState obj) { }
+ }
+}
+namespace ReactiveUI.Validation.Components.Abstractions
+{
+ public interface IPropertyValidationComponent : ReactiveUI.Validation.Components.Abstractions.IValidatesProperties, ReactiveUI.Validation.Components.Abstractions.IValidationComponent { }
+ public interface IValidatesProperties
+ {
+ System.Collections.Generic.IEnumerable Properties { get; }
+ int PropertyCount { get; }
+ bool ContainsPropertyName(string propertyName, bool exclusively = false);
+ }
+ public interface IValidationComponent
+ {
+ bool IsValid { get; }
+ ReactiveUI.Validation.Collections.ValidationText? Text { get; }
+ System.IObservable ValidationStatusChange { get; }
+ }
+}
+namespace ReactiveUI.Validation.Components
+{
+ public abstract class BasePropertyValidation : ReactiveUI.ReactiveObject, ReactiveUI.Validation.Components.Abstractions.IPropertyValidationComponent, ReactiveUI.Validation.Components.Abstractions.IValidatesProperties, ReactiveUI.Validation.Components.Abstractions.IValidationComponent, System.IDisposable
+ {
+ protected BasePropertyValidation() { }
+ public bool IsValid { get; }
+ public System.Collections.Generic.IEnumerable Properties { get; }
+ public int PropertyCount { get; }
+ public ReactiveUI.Validation.Collections.ValidationText? Text { get; }
+ public System.IObservable ValidationStatusChange { get; }
+ protected void AddProperty(System.Linq.Expressions.Expression> property) { }
+ public bool ContainsPropertyName(string propertyName, bool exclusively = false) { }
+ public void Dispose() { }
+ protected virtual void Dispose(bool disposing) { }
+ protected abstract System.IObservable GetValidationChangeObservable();
+ }
+ public sealed class BasePropertyValidation : ReactiveUI.Validation.Components.BasePropertyValidation
+ {
+ public BasePropertyValidation(TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.Func isValidFunc, System.Func message) { }
+ public BasePropertyValidation(TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.Func isValidFunc, System.Func messageFunc) { }
+ public BasePropertyValidation(TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.Func isValidFunc, string message) { }
+ protected override void Dispose(bool disposing) { }
+ protected override System.IObservable GetValidationChangeObservable() { }
+ }
+ public abstract class ObservableValidationBase : ReactiveUI.ReactiveObject, ReactiveUI.Validation.Components.Abstractions.IPropertyValidationComponent, ReactiveUI.Validation.Components.Abstractions.IValidatesProperties, ReactiveUI.Validation.Components.Abstractions.IValidationComponent, System.IDisposable
+ {
+ protected ObservableValidationBase(System.IObservable observable) { }
+ protected ObservableValidationBase(TViewModel viewModel, System.IObservable observable, System.Func isValidFunc, System.Func messageFunc) { }
+ public bool IsValid { get; }
+ public System.Collections.Generic.IEnumerable Properties { get; }
+ public int PropertyCount { get; }
+ public ReactiveUI.Validation.Collections.ValidationText? Text { get; }
+ public System.IObservable ValidationStatusChange { get; }
+ protected void AddProperty(System.Linq.Expressions.Expression> property) { }
+ public bool ContainsPropertyName(string propertyName, bool exclusively = false) { }
+ public void Dispose() { }
+ protected virtual void Dispose(bool disposing) { }
+ }
+ public sealed class ObservableValidation : ReactiveUI.Validation.Components.ObservableValidationBase
+ {
+ public ObservableValidation(System.IObservable observable) { }
+ public ObservableValidation(TViewModel viewModel, System.IObservable observable, System.Func isValidFunc, System.Func messageFunc) { }
+ public ObservableValidation(TViewModel viewModel, System.IObservable observable, System.Func isValidFunc, string message) { }
+ public ObservableValidation(TViewModel viewModel, System.IObservable observable, System.Func isValidFunc, System.Func messageFunc) { }
+ public ObservableValidation(TViewModel viewModel, System.IObservable observable, System.Func isValidFunc, System.Func messageFunc) { }
+ public ObservableValidation(TViewModel viewModel, System.IObservable observable, System.Func isValidFunc, string message) { }
+ }
+ public sealed class ObservableValidation : ReactiveUI.Validation.Components.ObservableValidationBase
+ {
+ public ObservableValidation(System.Linq.Expressions.Expression> viewModelProperty, System.IObservable observable) { }
+ public ObservableValidation(TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.IObservable observable, System.Func isValidFunc, System.Func messageFunc) { }
+ public ObservableValidation(TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.IObservable observable, System.Func isValidFunc, string message) { }
+ public ObservableValidation(TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.IObservable observable, System.Func isValidFunc, System.Func messageFunc) { }
+ public ObservableValidation(TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.IObservable observable, System.Func isValidFunc, System.Func messageFunc) { }
+ public ObservableValidation(TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.IObservable observable, System.Func isValidFunc, string message) { }
+ }
+}
+namespace ReactiveUI.Validation.Contexts
+{
+ public class ValidationContext : ReactiveUI.ReactiveObject, ReactiveUI.Validation.Components.Abstractions.IValidationComponent, System.IDisposable
+ {
+ public ValidationContext(System.Reactive.Concurrency.IScheduler? scheduler = null) { }
+ public bool IsValid { get; }
+ public ReactiveUI.Validation.Collections.ValidationText Text { get; }
+ public System.IObservable Valid { get; }
+ public System.IObservable ValidationStatusChange { get; }
+ public System.Collections.ObjectModel.ReadOnlyObservableCollection Validations { get; }
+ public void Add(ReactiveUI.Validation.Components.Abstractions.IValidationComponent validation) { }
+ public void Dispose() { }
+ protected virtual void Dispose(bool disposing) { }
+ public bool GetIsValid() { }
+ public void Remove(ReactiveUI.Validation.Components.Abstractions.IValidationComponent validation) { }
+ public void RemoveMany(System.Collections.Generic.IEnumerable validations) { }
+ }
+}
+namespace ReactiveUI.Validation.Extensions
+{
+ public static class ValidatableViewModelExtensions
+ {
+ public static void ClearValidationRules(this TViewModel viewModel)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static void ClearValidationRules(this TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static System.IObservable IsValid(this TViewModel viewModel)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static ReactiveUI.Validation.Helpers.ValidationHelper ValidationRule(this TViewModel viewModel, System.IObservable validationObservable)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static ReactiveUI.Validation.Helpers.ValidationHelper ValidationRule(this TViewModel viewModel, System.IObservable validationObservable, string message)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static ReactiveUI.Validation.Helpers.ValidationHelper ValidationRule(this TViewModel viewModel, System.IObservable validationObservable)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel
+ where TValue : ReactiveUI.Validation.States.IValidationState { }
+ public static ReactiveUI.Validation.Helpers.ValidationHelper ValidationRule(this TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.IObservable validationObservable)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static ReactiveUI.Validation.Helpers.ValidationHelper ValidationRule(this TViewModel viewModel, System.IObservable validationObservable, System.Func isValidFunc, System.Func messageFunc)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static ReactiveUI.Validation.Helpers.ValidationHelper ValidationRule(this TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.Func isPropertyValid, System.Func message)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static ReactiveUI.Validation.Helpers.ValidationHelper ValidationRule(this TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.Func isPropertyValid, string message)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static ReactiveUI.Validation.Helpers.ValidationHelper ValidationRule(this TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.IObservable viewModelObservable, string message)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static ReactiveUI.Validation.Helpers.ValidationHelper ValidationRule(this TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.IObservable validationObservable)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel
+ where TValue : ReactiveUI.Validation.States.IValidationState { }
+ public static ReactiveUI.Validation.Helpers.ValidationHelper ValidationRule(this TViewModel viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.IObservable viewModelObservable, System.Func isValidFunc, System.Func messageFunc)
+ where TViewModel : ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ }
+ public static class ValidatesPropertiesExtensions
+ {
+ public static bool ContainsProperty(this ReactiveUI.Validation.Components.Abstractions.IValidatesProperties validatesProperties, System.Linq.Expressions.Expression> propertyExpression, bool exclusively = false) { }
+ }
+ public static class ValidationContextExtensions
+ {
+ public static System.IObservable> ObserveFor(this ReactiveUI.Validation.Contexts.ValidationContext context, System.Linq.Expressions.Expression> viewModelProperty, bool strict = true) { }
+ }
+ public static class ViewForExtensions
+ {
+ public static System.IDisposable BindValidation(this TView view, TViewModel? viewModel, System.Linq.Expressions.Expression> viewProperty, ReactiveUI.Validation.Formatters.Abstractions.IValidationTextFormatter? formatter = null)
+ where TView : ReactiveUI.IViewFor
+ where TViewModel : class, ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static System.IDisposable BindValidation(this TView view, TViewModel? viewModel, System.Linq.Expressions.Expression> viewModelHelperProperty, System.Linq.Expressions.Expression> viewProperty, ReactiveUI.Validation.Formatters.Abstractions.IValidationTextFormatter? formatter = null)
+ where TView : ReactiveUI.IViewFor
+ where TViewModel : class, ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static System.IDisposable BindValidation(this TView view, TViewModel? viewModel, System.Linq.Expressions.Expression> viewModelProperty, System.Linq.Expressions.Expression> viewProperty, ReactiveUI.Validation.Formatters.Abstractions.IValidationTextFormatter? formatter = null)
+ where TView : ReactiveUI.IViewFor
+ where TViewModel : class, ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ }
+}
+namespace ReactiveUI.Validation.Formatters.Abstractions
+{
+ public interface IValidationTextFormatter
+ {
+ TOut Format(ReactiveUI.Validation.Collections.ValidationText validationText);
+ }
+}
+namespace ReactiveUI.Validation.Formatters
+{
+ public class SingleLineFormatter : ReactiveUI.Validation.Formatters.Abstractions.IValidationTextFormatter
+ {
+ public SingleLineFormatter(string? separator = null) { }
+ public static ReactiveUI.Validation.Formatters.SingleLineFormatter Default { get; }
+ public string Format(ReactiveUI.Validation.Collections.ValidationText validationText) { }
+ }
+}
+namespace ReactiveUI.Validation.Helpers
+{
+ public abstract class ReactiveValidationObject : ReactiveUI.ReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel, System.ComponentModel.INotifyDataErrorInfo
+ {
+ protected ReactiveValidationObject(System.Reactive.Concurrency.IScheduler? scheduler = null, ReactiveUI.Validation.Formatters.Abstractions.IValidationTextFormatter? formatter = null) { }
+ public bool HasErrors { get; }
+ public ReactiveUI.Validation.Contexts.ValidationContext ValidationContext { get; }
+ public event System.EventHandler? ErrorsChanged;
+ public virtual System.Collections.IEnumerable GetErrors(string propertyName) { }
+ protected void RaiseErrorsChanged(string propertyName = "") { }
+ }
+ public class ValidationHelper : ReactiveUI.ReactiveObject, System.IDisposable
+ {
+ public ValidationHelper(ReactiveUI.Validation.Components.Abstractions.IValidationComponent validation, System.IDisposable? cleanup = null) { }
+ public bool IsValid { get; }
+ public ReactiveUI.Validation.Collections.ValidationText? Message { get; }
+ public System.IObservable ValidationChanged { get; }
+ public void Dispose() { }
+ protected virtual void Dispose(bool disposing) { }
+ }
+}
+namespace ReactiveUI.Validation.States
+{
+ public interface IValidationState
+ {
+ bool IsValid { get; }
+ ReactiveUI.Validation.Collections.ValidationText Text { get; }
+ }
+ public class ValidationState : ReactiveUI.Validation.States.IValidationState
+ {
+ public static readonly ReactiveUI.Validation.States.ValidationState Valid;
+ public ValidationState(bool isValid, ReactiveUI.Validation.Collections.ValidationText text) { }
+ public ValidationState(bool isValid, string text) { }
+ public bool IsValid { get; }
+ public ReactiveUI.Validation.Collections.ValidationText Text { get; }
+ }
+}
+namespace ReactiveUI.Validation.TemplateGenerators
+{
+ public sealed class BasePropertyValidation : ReactiveUI.Validation.Components.BasePropertyValidation
+ {
+ public BasePropertyValidation(TViewModel viewModel, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func, bool> isValidFunc, System.Func, string> message) { }
+ public BasePropertyValidation(TViewModel viewModel, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func, bool> isValidFunc, System.Func, bool, ReactiveUI.Validation.Collections.ValidationText> message) { }
+ public BasePropertyValidation(TViewModel viewModel, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func, bool> isValidFunc, System.Func, bool, string> messageFunc) { }
+ protected override void Dispose(bool disposing) { }
+ protected override System.IObservable GetValidationChangeObservable() { }
+ }
+ public sealed class BasePropertyValidation : ReactiveUI.Validation.Components.BasePropertyValidation
+ {
+ public BasePropertyValidation(TViewModel viewModel, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func, bool> isValidFunc, System.Func, string> message) { }
+ public BasePropertyValidation(TViewModel viewModel, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func, bool> isValidFunc, System.Func, bool, ReactiveUI.Validation.Collections.ValidationText> message) { }
+ public BasePropertyValidation(TViewModel viewModel, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func, bool> isValidFunc, System.Func, bool, string> messageFunc) { }
+ protected override void Dispose(bool disposing) { }
+ protected override System.IObservable GetValidationChangeObservable() { }
+ }
+ public sealed class BasePropertyValidation : ReactiveUI.Validation.Components.BasePropertyValidation
+ {
+ public BasePropertyValidation(TViewModel viewModel, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func, bool> isValidFunc, System.Func, string> message) { }
+ public BasePropertyValidation(TViewModel viewModel, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func, bool> isValidFunc, System.Func, bool, ReactiveUI.Validation.Collections.ValidationText> message) { }
+ public BasePropertyValidation(TViewModel viewModel, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func, bool> isValidFunc, System.Func, bool, string> messageFunc) { }
+ protected override void Dispose(bool disposing) { }
+ protected override System.IObservable GetValidationChangeObservable() { }
+ }
+ public sealed class BasePropertyValidation : ReactiveUI.Validation.Components.BasePropertyValidation
+ {
+ public BasePropertyValidation(TViewModel viewModel, 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.Func, bool> isValidFunc, System.Func, string> message) { }
+ public BasePropertyValidation(TViewModel viewModel, 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.Func, bool> isValidFunc, System.Func, bool, ReactiveUI.Validation.Collections.ValidationText> message) { }
+ public BasePropertyValidation(TViewModel viewModel, 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.Func, bool> isValidFunc, System.Func, bool, string> messageFunc) { }
+ protected override void Dispose(bool disposing) { }
+ protected override System.IObservable GetValidationChangeObservable() { }
+ }
+ public sealed class BasePropertyValidation : ReactiveUI.Validation.Components.BasePropertyValidation
+ {
+ public BasePropertyValidation(TViewModel viewModel, 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.Func, bool> isValidFunc, System.Func, string> message) { }
+ public BasePropertyValidation(TViewModel viewModel, 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.Func, bool> isValidFunc, System.Func, bool, ReactiveUI.Validation.Collections.ValidationText> message) { }
+ public BasePropertyValidation(TViewModel viewModel, 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.Func, bool> isValidFunc, System.Func, bool, string> messageFunc) { }
+ protected override void Dispose(bool disposing) { }
+ protected override System.IObservable GetValidationChangeObservable() { }
+ }
+}
+namespace ReactiveUI.Validation.ValidationBindings.Abstractions
+{
+ public interface IValidationBinding : System.IDisposable { }
+}
+namespace ReactiveUI.Validation.ValidationBindings
+{
+ public sealed class ValidationBinding : ReactiveUI.Validation.ValidationBindings.Abstractions.IValidationBinding, System.IDisposable
+ {
+ public void Dispose() { }
+ public static ReactiveUI.Validation.ValidationBindings.Abstractions.IValidationBinding ForProperty(TView view, System.Linq.Expressions.Expression> viewModelProperty, System.Action, System.Collections.Generic.IList> action, ReactiveUI.Validation.Formatters.Abstractions.IValidationTextFormatter formatter, bool strict = true)
+ where TView : ReactiveUI.IViewFor
+ where TViewModel : class, ReactiveUI.IReactiveObject, ReactiveUI.Validation.Abstractions.IValidatableViewModel { }
+ public static ReactiveUI.Validation.ValidationBindings.Abstractions.IValidationBinding ForProperty(TView view, System.Linq.Expressions.Expression