From 28d44af91a249c9229ba1bbe543898bdbbe4a871 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Fri, 26 Apr 2019 14:55:54 +0100 Subject: [PATCH] Placeholder RenderTreeBuilder.SetKey() to enable aspnetcore-tooling work --- ...rosoft.AspNetCore.Components.netstandard2.0.cs | 1 + .../src/RenderTree/RenderTreeBuilder.cs | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.cs b/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.cs index e426d3215d..37431bbb56 100644 --- a/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.cs +++ b/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.cs @@ -763,6 +763,7 @@ namespace Microsoft.AspNetCore.Components.RenderTree public void OpenComponent(int sequence, System.Type componentType) { } public void OpenComponent(int sequence) where TComponent : Microsoft.AspNetCore.Components.IComponent { } public void OpenElement(int sequence, string elementName) { } + public void SetKey(object value) { } } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public readonly partial struct RenderTreeDiff diff --git a/src/Components/Components/src/RenderTree/RenderTreeBuilder.cs b/src/Components/Components/src/RenderTree/RenderTreeBuilder.cs index 29ba31268c..24f07042c4 100644 --- a/src/Components/Components/src/RenderTree/RenderTreeBuilder.cs +++ b/src/Components/Components/src/RenderTree/RenderTreeBuilder.cs @@ -448,6 +448,21 @@ namespace Microsoft.AspNetCore.Components.RenderTree OpenComponentUnchecked(sequence, componentType); } + /// + /// Assigns the specified key value to the current element or component. + /// + /// The value for the key. + public void SetKey(object value) + { + // This is just a placeholder to enable work in parallel in the + // aspnetcore-tooling repo. + // + // The real implementation will involve multiple overloads, likely: + // SetKey(int value) -- underlying logic + // SetKey(T value) where T: struct -- avoids boxing 'value' before calling .GetHashCode() + // SetKey(object value) -- performs null check before calling .GetHashCode() + } + private void OpenComponentUnchecked(int sequence, Type componentType) { _openElementIndices.Push(_entries.Count);