diff --git a/src/Avalonia.Base/Media/IGlyphTypeface.cs b/src/Avalonia.Base/Media/IGlyphTypeface.cs
index 09740aac81..ab3080e7c8 100644
--- a/src/Avalonia.Base/Media/IGlyphTypeface.cs
+++ b/src/Avalonia.Base/Media/IGlyphTypeface.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics.CodeAnalysis;
using Avalonia.Metadata;
namespace Avalonia.Media
@@ -109,6 +110,6 @@ namespace Avalonia.Media
/// The table tag to get the data for.
/// The contents of the table data for the specified tag.
/// Returns true if the content exists, otherwise false.
- bool TryGetTable(uint tag, out byte[] table);
+ bool TryGetTable(uint tag, [NotNullWhen(true)] out byte[]? table);
}
}
diff --git a/src/Avalonia.Base/Utilities/StringSplitter.cs b/src/Avalonia.Base/Utilities/StringSplitter.cs
index 95e1049f8f..09dd483ff2 100644
--- a/src/Avalonia.Base/Utilities/StringSplitter.cs
+++ b/src/Avalonia.Base/Utilities/StringSplitter.cs
@@ -21,7 +21,7 @@ internal static class StringSplitter
/// The character that closes a bracketed section. ) by default.
/// Options for trimming entries and removing empty entries.
/// An array of split segments. Returns an empty array if the input is null or only whitespace.
- public static string[] SplitRespectingBrackets(string s, char separator,
+ public static string[] SplitRespectingBrackets(string? s, char separator,
char openingBracket = DefaultOpeningParenthesis, char closingBracket = DefaultClosingParenthesis,
StringSplitOptions options = StringSplitOptions.None) =>
SplitRespectingBrackets(s, [separator], openingBracket, closingBracket, options);
@@ -36,7 +36,7 @@ internal static class StringSplitter
/// The character that closes a bracketed section. ) by default.
/// Options for trimming entries and removing empty entries.
/// An array of split segments. Returns an empty array if the input is null or only whitespace.
- public static string[] SplitRespectingBrackets(string s, ReadOnlySpan separators,
+ public static string[] SplitRespectingBrackets(string? s, ReadOnlySpan separators,
char openingBracket = DefaultOpeningParenthesis, char closingBracket = DefaultClosingParenthesis,
StringSplitOptions options = StringSplitOptions.None)
{
diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/ExpressionNodeFactory.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/ExpressionNodeFactory.cs
index 59794ceb92..682e1a7067 100644
--- a/src/Markup/Avalonia.Markup/Markup/Parsers/ExpressionNodeFactory.cs
+++ b/src/Markup/Avalonia.Markup/Markup/Parsers/ExpressionNodeFactory.cs
@@ -20,7 +20,7 @@ namespace Avalonia.Markup.Parsers
#endif
public static List? CreateFromAst(
List astNodes,
- Func? typeResolver,
+ Func? typeResolver,
INameScope? nameScope,
out bool isRooted)
{
@@ -111,7 +111,7 @@ namespace Avalonia.Markup.Parsers
}
private static AvaloniaPropertyAccessorNode AttachedPropertyNode(
- Func? typeResolver,
+ Func? typeResolver,
BindingExpressionGrammar.AttachedPropertyNameNode attached)
{
var type = LookupType(typeResolver, attached.Namespace, attached.TypeName);
@@ -121,7 +121,7 @@ namespace Avalonia.Markup.Parsers
}
private static LogicalAncestorElementNode LogicalAncestorNode(
- Func? typeResolver,
+ Func? typeResolver,
BindingExpressionGrammar.AncestorNode ancestor)
{
Type? type = null;
@@ -135,7 +135,7 @@ namespace Avalonia.Markup.Parsers
}
private static Type LookupType(
- Func? typeResolver,
+ Func? typeResolver,
string? @namespace,
string? name)
{
diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/SelectorParser.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/SelectorParser.cs
index 350b07742f..acdfd2f744 100644
--- a/src/Markup/Avalonia.Markup/Markup/Parsers/SelectorParser.cs
+++ b/src/Markup/Avalonia.Markup/Markup/Parsers/SelectorParser.cs
@@ -13,7 +13,7 @@ namespace Avalonia.Markup.Parsers
///
internal class SelectorParser
{
- private readonly Func _typeResolver;
+ private readonly Func _typeResolver;
///
/// Initializes a new instance of the class.
@@ -23,7 +23,7 @@ namespace Avalonia.Markup.Parsers
/// a type name and a XML namespace prefix and a type name, and should return the resolved
/// type or throw an exception.
///
- public SelectorParser(Func typeResolver)
+ public SelectorParser(Func typeResolver)
{
_typeResolver = typeResolver;
}
diff --git a/src/Skia/Avalonia.Skia/GlyphTypefaceImpl.cs b/src/Skia/Avalonia.Skia/GlyphTypefaceImpl.cs
index 3dd4bbd7c1..9629f5e462 100644
--- a/src/Skia/Avalonia.Skia/GlyphTypefaceImpl.cs
+++ b/src/Skia/Avalonia.Skia/GlyphTypefaceImpl.cs
@@ -355,7 +355,7 @@ namespace Avalonia.Skia
GC.SuppressFinalize(this);
}
- public bool TryGetTable(uint tag, out byte[] table)
+ public bool TryGetTable(uint tag, [NotNullWhen(true)] out byte[]? table)
{
return SKTypeface.TryGetTableData(tag, out table);
}
diff --git a/tests/Avalonia.Base.UnitTests/Animation/AnimatableTests.cs b/tests/Avalonia.Base.UnitTests/Animation/AnimatableTests.cs
index a76b5a9c3f..fd68687c4c 100644
--- a/tests/Avalonia.Base.UnitTests/Animation/AnimatableTests.cs
+++ b/tests/Avalonia.Base.UnitTests/Animation/AnimatableTests.cs
@@ -98,7 +98,7 @@ namespace Avalonia.Base.UnitTests.Animation
[Theory]
[InlineData(null)] //null value
[InlineData("stringValue")] //string value
- public void Invalid_Values_In_Animation_Should_Not_Crash_Animations(object invalidValue)
+ public void Invalid_Values_In_Animation_Should_Not_Crash_Animations(object? invalidValue)
{
var keyframe1 = new KeyFrame()
{
@@ -226,7 +226,7 @@ namespace Avalonia.Base.UnitTests.Animation
0.5));
target.Invocations.Clear();
- var root = (TestRoot)control.Parent;
+ var root = (TestRoot?)control.Parent;
Assert.NotNull(root);
root.Child = null;
control.Opacity = 0.8;
@@ -675,8 +675,8 @@ namespace Avalonia.Base.UnitTests.Animation
}
private static Control CreateStyledControl(
- ITransition transition1 = null,
- ITransition transition2 = null)
+ ITransition? transition1 = null,
+ ITransition? transition2 = null)
{
transition1 = transition1 ?? CreateTarget().Object;
transition2 = transition2 ?? CreateTransition(Layoutable.WidthProperty).Object;
diff --git a/tests/Avalonia.Base.UnitTests/Animation/KeySplineTests.cs b/tests/Avalonia.Base.UnitTests/Animation/KeySplineTests.cs
index 8af1f7ec02..51feb9dcd0 100644
--- a/tests/Avalonia.Base.UnitTests/Animation/KeySplineTests.cs
+++ b/tests/Avalonia.Base.UnitTests/Animation/KeySplineTests.cs
@@ -19,9 +19,7 @@ namespace Avalonia.Base.UnitTests.Animation
{
var conv = new KeySplineTypeConverter();
- var keySpline = (KeySpline)conv.ConvertFrom(input);
-
- Assert.NotNull(keySpline);
+ var keySpline = Assert.IsAssignableFrom(conv.ConvertFrom(input));
Assert.Equal(1, keySpline.ControlPointX1);
Assert.Equal(2, keySpline.ControlPointY1);
@@ -36,7 +34,7 @@ namespace Avalonia.Base.UnitTests.Animation
{
var conv = new KeySplineTypeConverter();
- Assert.ThrowsAny(() => (KeySpline)conv.ConvertFrom(input));
+ Assert.ThrowsAny(() => (KeySpline?)conv.ConvertFrom(input));
}
[Theory]
diff --git a/tests/Avalonia.Base.UnitTests/Animation/SpringTests.cs b/tests/Avalonia.Base.UnitTests/Animation/SpringTests.cs
index cb1a3487be..43e01dc37b 100644
--- a/tests/Avalonia.Base.UnitTests/Animation/SpringTests.cs
+++ b/tests/Avalonia.Base.UnitTests/Animation/SpringTests.cs
@@ -16,7 +16,7 @@ public class SpringTests
{
var conv = new SpringTypeConverter();
- var spring = (Spring)conv.ConvertFrom(input);
+ var spring = Assert.IsAssignableFrom(conv.ConvertFrom(input));
Assert.NotNull(spring);
Assert.Equal(1, spring.Mass);
@@ -32,7 +32,7 @@ public class SpringTests
{
var conv = new SpringTypeConverter();
- Assert.ThrowsAny(() => (Spring)conv.ConvertFrom(input));
+ Assert.ThrowsAny(() => (Spring?)conv.ConvertFrom(input));
}
[Fact]
diff --git a/tests/Avalonia.Base.UnitTests/Animation/TestClock.cs b/tests/Avalonia.Base.UnitTests/Animation/TestClock.cs
index 6604bd29a4..8934dc8c19 100644
--- a/tests/Avalonia.Base.UnitTests/Animation/TestClock.cs
+++ b/tests/Avalonia.Base.UnitTests/Animation/TestClock.cs
@@ -7,7 +7,7 @@ namespace Avalonia.Base.UnitTests.Animation
{
private TimeSpan _curTime;
- private IObserver _observer;
+ private IObserver? _observer;
public PlayState PlayState { get; set; } = PlayState.Run;
diff --git a/tests/Avalonia.Base.UnitTests/Avalonia.Base.UnitTests.csproj b/tests/Avalonia.Base.UnitTests/Avalonia.Base.UnitTests.csproj
index 0f71dac8f2..d82f42ec07 100644
--- a/tests/Avalonia.Base.UnitTests/Avalonia.Base.UnitTests.csproj
+++ b/tests/Avalonia.Base.UnitTests/Avalonia.Base.UnitTests.csproj
@@ -12,6 +12,7 @@
+
diff --git a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Direct.cs b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Direct.cs
index a7f00fe943..baa44c6770 100644
--- a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Direct.cs
+++ b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Direct.cs
@@ -79,8 +79,8 @@ namespace Avalonia.Base.UnitTests
target.PropertyChanged += (s, e) =>
raised = e.Property == Class1.FooProperty &&
- (string)e.OldValue == "initial" &&
- (string)e.NewValue == "newvalue" &&
+ (string?)e.OldValue == "initial" &&
+ (string?)e.NewValue == "newvalue" &&
e.Priority == BindingPriority.LocalValue;
target.SetValue(Class1.FooProperty, "newvalue");
@@ -131,13 +131,13 @@ namespace Avalonia.Base.UnitTests
public void Bind_Raises_PropertyChanged()
{
var target = new Class1();
- var source = new Subject>();
+ var source = new Subject>();
bool raised = false;
target.PropertyChanged += (s, e) =>
raised = e.Property == Class1.FooProperty &&
- (string)e.OldValue == "initial" &&
- (string)e.NewValue == "newvalue" &&
+ (string?)e.OldValue == "initial" &&
+ (string?)e.NewValue == "newvalue" &&
e.Priority == BindingPriority.LocalValue;
target.Bind(Class1.FooProperty, source);
@@ -150,7 +150,7 @@ namespace Avalonia.Base.UnitTests
public void PropertyChanged_Not_Raised_When_Value_Unchanged()
{
var target = new Class1();
- var source = new Subject>();
+ var source = new Subject>();
var raised = 0;
target.PropertyChanged += (s, e) => ++raised;
@@ -189,8 +189,8 @@ namespace Avalonia.Base.UnitTests
Assert.Same(target, s);
Assert.Equal(BindingPriority.LocalValue, e.Priority);
Assert.Equal(Class1.FooProperty, e.Property);
- Assert.Equal("newvalue", (string)e.OldValue);
- Assert.Equal("unset", (string)e.NewValue);
+ Assert.Equal("newvalue", (string?)e.OldValue);
+ Assert.Equal("unset", (string?)e.NewValue);
++raised;
};
@@ -203,7 +203,7 @@ namespace Avalonia.Base.UnitTests
public void GetObservable_Returns_Values()
{
var target = new Class1();
- List values = new List();
+ var values = new List();
target.GetObservable(Class1.FooProperty).Subscribe(x => values.Add(x));
target.Foo = "newvalue";
@@ -428,11 +428,11 @@ namespace Avalonia.Base.UnitTests
public void Binding_Error_Reverts_To_Default_Value()
{
var target = new Class1();
- var source = new Subject>();
+ var source = new Subject>();
target.Bind(Class1.FooProperty, source);
source.OnNext("initial");
- source.OnNext(BindingValue.BindingError(new InvalidOperationException("Foo")));
+ source.OnNext(BindingValue.BindingError(new InvalidOperationException("Foo")));
Assert.Equal("unset", target.GetValue(Class1.FooProperty));
}
@@ -441,11 +441,11 @@ namespace Avalonia.Base.UnitTests
public void Binding_Error_With_FallbackValue_Causes_Target_Update()
{
var target = new Class1();
- var source = new Subject>();
+ var source = new Subject>();
target.Bind(Class1.FooProperty, source);
source.OnNext("initial");
- source.OnNext(BindingValue.BindingError(new InvalidOperationException("Foo"), "bar"));
+ source.OnNext(BindingValue.BindingError(new InvalidOperationException("Foo"), "bar"));
Assert.Equal("bar", target.GetValue(Class1.FooProperty));
}
@@ -454,11 +454,11 @@ namespace Avalonia.Base.UnitTests
public void DataValidationError_Does_Not_Cause_Target_Update()
{
var target = new Class1();
- var source = new Subject>();
+ var source = new Subject>();
target.Bind(Class1.FooProperty, source);
source.OnNext("initial");
- source.OnNext(BindingValue.DataValidationError(new InvalidOperationException("Foo")));
+ source.OnNext(BindingValue.DataValidationError(new InvalidOperationException("Foo")));
Assert.Equal("initial", target.GetValue(Class1.FooProperty));
}
@@ -467,11 +467,11 @@ namespace Avalonia.Base.UnitTests
public void DataValidationError_With_FallbackValue_Causes_Target_Update()
{
var target = new Class1();
- var source = new Subject>();
+ var source = new Subject>();
target.Bind(Class1.FooProperty, source);
source.OnNext("initial");
- source.OnNext(BindingValue.DataValidationError(new InvalidOperationException("Foo"), "bar"));
+ source.OnNext(BindingValue.DataValidationError(new InvalidOperationException("Foo"), "bar"));
Assert.Equal("bar", target.GetValue(Class1.FooProperty));
}
@@ -480,11 +480,11 @@ namespace Avalonia.Base.UnitTests
public void BindingError_With_FallbackValue_Causes_Target_Update()
{
var target = new Class1();
- var source = new Subject>();
+ var source = new Subject>();
target.Bind(Class1.FooProperty, source);
source.OnNext("initial");
- source.OnNext(BindingValue.BindingError(new InvalidOperationException("Foo"), "fallback"));
+ source.OnNext(BindingValue.BindingError(new InvalidOperationException("Foo"), "fallback"));
Assert.Equal("fallback", target.GetValue(Class1.FooProperty));
}
@@ -589,15 +589,15 @@ namespace Avalonia.Base.UnitTests
private class Class1 : AvaloniaObject
{
- public static readonly DirectProperty FooProperty =
- AvaloniaProperty.RegisterDirect(
+ public static readonly DirectProperty FooProperty =
+ AvaloniaProperty.RegisterDirect(
nameof(Foo),
o => o.Foo,
(o, v) => o.Foo = v,
unsetValue: "unset");
- public static readonly DirectProperty BarProperty =
- AvaloniaProperty.RegisterDirect(nameof(Bar), o => o.Bar);
+ public static readonly DirectProperty BarProperty =
+ AvaloniaProperty.RegisterDirect(nameof(Bar), o => o.Bar);
public static readonly DirectProperty BazProperty =
AvaloniaProperty.RegisterDirect(
@@ -612,26 +612,26 @@ namespace Avalonia.Base.UnitTests
o => o.DoubleValue,
(o, v) => o.DoubleValue = v);
- public static readonly DirectProperty FrankProperty =
- AvaloniaProperty.RegisterDirect(
+ public static readonly DirectProperty FrankProperty =
+ AvaloniaProperty.RegisterDirect(
nameof(Frank),
o => o.Frank,
(o, v) => o.Frank = v,
unsetValue: "Kups");
- private string _foo = "initial";
- private readonly string _bar = "bar";
+ private string? _foo = "initial";
+ private readonly string? _bar = "bar";
private int _baz = 5;
private double _doubleValue;
- private object _frank;
+ private object? _frank;
- public string Foo
+ public string? Foo
{
get { return _foo; }
set { SetAndRaise(FooProperty, ref _foo, value); }
}
- public string Bar
+ public string? Bar
{
get { return _bar; }
}
@@ -648,7 +648,7 @@ namespace Avalonia.Base.UnitTests
set { SetAndRaise(DoubleValueProperty, ref _doubleValue, value); }
}
- public object Frank
+ public object? Frank
{
get { return _frank; }
set { SetAndRaise(FrankProperty, ref _frank, value); }
@@ -657,16 +657,16 @@ namespace Avalonia.Base.UnitTests
private class Class2 : AvaloniaObject
{
- public static readonly DirectProperty FooProperty =
+ public static readonly DirectProperty FooProperty =
Class1.FooProperty.AddOwner(o => o.Foo, (o, v) => o.Foo = v);
- private string _foo = "initial2";
+ private string? _foo = "initial2";
static Class2()
{
}
- public string Foo
+ public string? Foo
{
get { return _foo; }
set { SetAndRaise(FooProperty, ref _foo, value); }
@@ -681,7 +681,7 @@ namespace Avalonia.Base.UnitTests
private double _value;
- public event PropertyChangedEventHandler PropertyChanged;
+ public event PropertyChangedEventHandler? PropertyChanged;
public double Value
{
diff --git a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_GetValue.cs b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_GetValue.cs
index c20b75443c..657bf72408 100644
--- a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_GetValue.cs
+++ b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_GetValue.cs
@@ -119,9 +119,9 @@ namespace Avalonia.Base.UnitTests
FooProperty.OverrideDefaultValue(typeof(Class2), "foooverride");
}
- public Class1 Parent
+ public Class1? Parent
{
- get { return (Class1)InheritanceParent; }
+ get { return (Class1?)InheritanceParent; }
set { InheritanceParent = value; }
}
}
diff --git a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Inheritance.cs b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Inheritance.cs
index 707e1d4470..3d10903ff8 100644
--- a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Inheritance.cs
+++ b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Inheritance.cs
@@ -132,8 +132,8 @@ namespace Avalonia.Base.UnitTests
child.PropertyChanged += (s, e) =>
raised = s == child &&
e.Property == Class1.BazProperty &&
- (string)e.OldValue == "bazdefault" &&
- (string)e.NewValue == "changed" &&
+ (string?)e.OldValue == "bazdefault" &&
+ (string?)e.NewValue == "changed" &&
e.Priority == BindingPriority.Inherited;
child.Parent = parent;
@@ -156,8 +156,8 @@ namespace Avalonia.Base.UnitTests
child.PropertyChanged += (s, e) =>
raised = s == child &&
e.Property == Class1.BazProperty &&
- (string)e.OldValue == "bazdefault" &&
- (string)e.NewValue == "changed2" &&
+ (string?)e.OldValue == "bazdefault" &&
+ (string?)e.NewValue == "changed2" &&
e.Priority == BindingPriority.Inherited;
child.Parent = parent;
@@ -178,8 +178,8 @@ namespace Avalonia.Base.UnitTests
child.PropertyChanged += (s, e) =>
raised = s == child &&
e.Property == AttachedOwner.AttachedProperty &&
- (string)e.OldValue == null &&
- (string)e.NewValue == "changed";
+ (string?)e.OldValue == null &&
+ (string?)e.NewValue == "changed";
child.Parent = parent;
@@ -216,8 +216,8 @@ namespace Avalonia.Base.UnitTests
child.PropertyChanged += (s, e) =>
raised = s == child &&
e.Property == Class1.BazProperty &&
- (string)e.OldValue == "bazdefault" &&
- (string)e.NewValue == "changed";
+ (string?)e.OldValue == "bazdefault" &&
+ (string?)e.NewValue == "changed";
child.Parent = parent;
parent.SetValue(Class1.BazProperty, "changed");
@@ -237,8 +237,8 @@ namespace Avalonia.Base.UnitTests
child.PropertyChanged += (s, e) =>
raised = s == child &&
e.Property == AttachedOwner.AttachedProperty &&
- (string)e.OldValue == null &&
- (string)e.NewValue == "changed";
+ (string?)e.OldValue == null &&
+ (string?)e.NewValue == "changed";
child.Parent = parent;
parent.SetValue(AttachedOwner.AttachedProperty, "changed");
@@ -260,8 +260,8 @@ namespace Avalonia.Base.UnitTests
child.PropertyChanged += (s, e) =>
raised = s == child &&
e.Property == Class1.BazProperty &&
- (string)e.OldValue == "changed" &&
- (string)e.NewValue == "bazdefault";
+ (string?)e.OldValue == "changed" &&
+ (string?)e.NewValue == "bazdefault";
parent.ClearValue(Class1.BazProperty);
@@ -379,9 +379,9 @@ namespace Avalonia.Base.UnitTests
FooProperty.OverrideDefaultValue(typeof(Class2), "foooverride");
}
- public Class1 Parent
+ public Class1? Parent
{
- get { return (Class1)InheritanceParent; }
+ get { return (Class1?)InheritanceParent; }
set { InheritanceParent = value; }
}
}
diff --git a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Metadata.cs b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Metadata.cs
index 2edb3deff0..12f60add00 100644
--- a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Metadata.cs
+++ b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Metadata.cs
@@ -61,15 +61,15 @@ namespace Avalonia.Base.UnitTests
private class Class1 : AvaloniaObject
{
- public static readonly StyledProperty StyledProperty =
- AvaloniaProperty.Register("Styled", "foo");
+ public static readonly StyledProperty StyledProperty =
+ AvaloniaProperty.Register("Styled", "foo");
- public static readonly DirectProperty DirectProperty =
- AvaloniaProperty.RegisterDirect("Styled", o => o.Direct, unsetValue: "foo");
+ public static readonly DirectProperty DirectProperty =
+ AvaloniaProperty.RegisterDirect("Styled", o => o.Direct, unsetValue: "foo");
- private string _direct = default;
+ private string? _direct = null;
- public string Direct
+ public string? Direct
{
get => _direct;
}
@@ -80,26 +80,26 @@ namespace Avalonia.Base.UnitTests
static Class2()
{
StyledProperty.OverrideDefaultValue("bar");
- DirectProperty.OverrideMetadata(new DirectPropertyMetadata("bar"));
+ DirectProperty.OverrideMetadata(new DirectPropertyMetadata("bar"));
}
}
private class Class3 : AvaloniaObject
{
- public static readonly StyledProperty StyledProperty =
+ public static readonly StyledProperty StyledProperty =
Class1.StyledProperty.AddOwner();
- public static readonly DirectProperty DirectProperty =
+ public static readonly DirectProperty DirectProperty =
Class1.DirectProperty.AddOwner(o => o.Direct, unsetValue: "baz");
- private string _direct = default;
+ private string? _direct = null;
static Class3()
{
StyledProperty.OverrideDefaultValue("baz");
}
- public string Direct
+ public string? Direct
{
get => _direct;
}
diff --git a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_MultiBinding.cs b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_MultiBinding.cs
index f3cf36998c..ce65e37cb7 100644
--- a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_MultiBinding.cs
+++ b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_MultiBinding.cs
@@ -76,7 +76,7 @@ namespace Avalonia.Base.UnitTests
{
var target = new Class1();
- var b = new Subject