Browse Source

Make expression nodes sealed where possible.

pull/13970/head
Steven Kirk 3 years ago
parent
commit
b52d52ab67
  1. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/ArrayIndexerNode.cs
  2. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/AvaloniaPropertyAccessorNode.cs
  3. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/DataContextNode.cs
  4. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/FuncTransformNode.cs
  5. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalAncestorElementNode.cs
  6. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalNotNode.cs
  7. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/MethodCommandNode.cs
  8. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/NamedElementNode.cs
  9. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/ParentDataContextNode.cs
  10. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/PropertyAccessorNode.cs
  11. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/DynamicPluginPropertyAccessorNode.cs
  12. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/DynamicPluginStreamNode.cs
  13. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/ReflectionIndexerNode.cs
  14. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/ReflectionTypeCastNode.cs
  15. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/StreamNode.cs
  16. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/TemplatedParentNode.cs
  17. 2
      src/Avalonia.Base/Data/Core/ExpressionNodes/VisualAncestorElementNode.cs

2
src/Avalonia.Base/Data/Core/ExpressionNodes/ArrayIndexerNode.cs

@ -8,7 +8,7 @@ namespace Avalonia.Data.Core.ExpressionNodes;
/// A node in an <see cref="BindingExpression"/> which accesses an array with integer
/// indexers.
/// </summary>
internal class ArrayIndexerNode : ExpressionNode, ISettableNode
internal sealed class ArrayIndexerNode : ExpressionNode, ISettableNode
{
private readonly int[] _indexes;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/AvaloniaPropertyAccessorNode.cs

@ -4,7 +4,7 @@ using System.Text;
namespace Avalonia.Data.Core.ExpressionNodes;
internal class AvaloniaPropertyAccessorNode : ExpressionNode, ISettableNode
internal sealed class AvaloniaPropertyAccessorNode : ExpressionNode, ISettableNode
{
private readonly EventHandler<AvaloniaPropertyChangedEventArgs> _onValueChanged;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/DataContextNode.cs

@ -2,7 +2,7 @@
namespace Avalonia.Data.Core.ExpressionNodes;
internal class DataContextNode : DataContextNodeBase
internal sealed class DataContextNode : DataContextNodeBase
{
protected override void OnSourceChanged(object source, Exception? dataValidationError)
{

2
src/Avalonia.Base/Data/Core/ExpressionNodes/FuncTransformNode.cs

@ -7,7 +7,7 @@ namespace Avalonia.Data.Core.ExpressionNodes;
/// A node in an <see cref="BindingExpression"/> which uses a function to transform its
/// value.
/// </summary>
internal class FuncTransformNode : ExpressionNode
internal sealed class FuncTransformNode : ExpressionNode
{
private readonly Func<object?, object?> _transform;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalAncestorElementNode.cs

@ -5,7 +5,7 @@ using Avalonia.Reactive;
namespace Avalonia.Data.Core.ExpressionNodes;
internal class LogicalAncestorElementNode : SourceNode
internal sealed class LogicalAncestorElementNode : SourceNode
{
private readonly Type? _ancestorType;
private readonly int _ancestorLevel;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalNotNode.cs

@ -5,7 +5,7 @@ using System.Text;
namespace Avalonia.Data.Core.ExpressionNodes;
internal class LogicalNotNode : ExpressionNode, ISettableNode
internal sealed class LogicalNotNode : ExpressionNode, ISettableNode
{
public override void BuildString(StringBuilder builder)
{

2
src/Avalonia.Base/Data/Core/ExpressionNodes/MethodCommandNode.cs

@ -10,7 +10,7 @@ namespace Avalonia.Data.Core.ExpressionNodes;
/// A node in an <see cref="BindingExpression"/> which converts methods to an
/// <see cref="ICommand"/>.
/// </summary>
internal class MethodCommandNode : ExpressionNode
internal sealed class MethodCommandNode : ExpressionNode
{
private readonly string _methodName;
private readonly Action<object, object?> _execute;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/NamedElementNode.cs

@ -6,7 +6,7 @@ using Avalonia.Reactive;
namespace Avalonia.Data.Core.ExpressionNodes;
internal class NamedElementNode : SourceNode
internal sealed class NamedElementNode : SourceNode
{
private readonly WeakReference<INameScope?> _nameScope;
private readonly string _name;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/ParentDataContextNode.cs

@ -6,7 +6,7 @@ namespace Avalonia.Data.Core.ExpressionNodes;
/// A node in an <see cref="BindingExpression"/> which selects the value of the visual
/// parent's DataContext.
/// </summary>
internal class ParentDataContextNode : DataContextNodeBase
internal sealed class ParentDataContextNode : DataContextNodeBase
{
private static readonly AvaloniaObject s_unset = new();
private AvaloniaObject? _parent = s_unset;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/PropertyAccessorNode.cs

@ -10,7 +10,7 @@ namespace Avalonia.Data.Core.ExpressionNodes;
/// A node in the binding path of an <see cref="BindingExpression"/> that reads a property
/// via a predefined <see cref="IPropertyAccessorPlugin"/>.
/// </summary>
internal class PropertyAccessorNode : ExpressionNode, IPropertyAccessorNode, ISettableNode
internal sealed class PropertyAccessorNode : ExpressionNode, IPropertyAccessorNode, ISettableNode
{
private readonly Action<object?> _onValueChanged;
private readonly IPropertyAccessorPlugin _plugin;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/DynamicPluginPropertyAccessorNode.cs

@ -12,7 +12,7 @@ namespace Avalonia.Data.Core.ExpressionNodes.Reflection;
/// <see cref="BindingPlugins.PropertyAccessors"/>.
/// </summary>
[RequiresUnreferencedCode(TrimmingMessages.ExpressionNodeRequiresUnreferencedCodeMessage)]
internal class DynamicPluginPropertyAccessorNode : ExpressionNode, IPropertyAccessorNode, ISettableNode
internal sealed class DynamicPluginPropertyAccessorNode : ExpressionNode, IPropertyAccessorNode, ISettableNode
{
private readonly Action<object?> _onValueChanged;
private IPropertyAccessor? _accessor;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/DynamicPluginStreamNode.cs

@ -7,7 +7,7 @@ using Avalonia.Reactive;
namespace Avalonia.Data.Core.ExpressionNodes.Reflection;
[RequiresUnreferencedCode(TrimmingMessages.ExpressionNodeRequiresUnreferencedCodeMessage)]
internal class DynamicPluginStreamNode : ExpressionNode
internal sealed class DynamicPluginStreamNode : ExpressionNode
{
private IDisposable? _subscription;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/ReflectionIndexerNode.cs

@ -13,7 +13,7 @@ using Avalonia.Utilities;
namespace Avalonia.Data.Core.ExpressionNodes.Reflection;
[RequiresUnreferencedCode(TrimmingMessages.ReflectionBindingRequiresUnreferencedCodeMessage)]
internal class ReflectionIndexerNode : CollectionNodeBase, ISettableNode
internal sealed class ReflectionIndexerNode : CollectionNodeBase, ISettableNode
{
private static readonly BindingFlags InstanceFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly;
private MethodInfo? _getter;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/ReflectionTypeCastNode.cs

@ -6,7 +6,7 @@ namespace Avalonia.Data.Core.ExpressionNodes.Reflection;
/// <summary>
/// A node in an <see cref="BindingExpression"/> which casts a value using reflection.
/// </summary>
internal class ReflectionTypeCastNode : ExpressionNode
internal sealed class ReflectionTypeCastNode : ExpressionNode
{
private readonly Type _targetType;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/StreamNode.cs

@ -4,7 +4,7 @@ using Avalonia.Data.Core.Plugins;
namespace Avalonia.Data.Core.ExpressionNodes;
internal class StreamNode : ExpressionNode, IObserver<object?>
internal sealed class StreamNode : ExpressionNode, IObserver<object?>
{
private IStreamPlugin _plugin;
private IDisposable? _subscription;

2
src/Avalonia.Base/Data/Core/ExpressionNodes/TemplatedParentNode.cs

@ -3,7 +3,7 @@ using System.Text;
namespace Avalonia.Data.Core.ExpressionNodes;
internal class TemplatedParentNode : SourceNode
internal sealed class TemplatedParentNode : SourceNode
{
public override void BuildString(StringBuilder builder)
{

2
src/Avalonia.Base/Data/Core/ExpressionNodes/VisualAncestorElementNode.cs

@ -5,7 +5,7 @@ using Avalonia.VisualTree;
namespace Avalonia.Data.Core.ExpressionNodes;
internal class VisualAncestorElementNode : SourceNode
internal sealed class VisualAncestorElementNode : SourceNode
{
private readonly Type? _ancestorType;
private readonly int _ancestorLevel;

Loading…
Cancel
Save