Skip to content

Commit de91125

Browse files
committed
Remove obsolete BindMethods code
Fixes: #11846
1 parent e520468 commit de91125

File tree

10 files changed

+16
-256
lines changed

10 files changed

+16
-256
lines changed

src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.cs

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,6 @@ public static partial class BindMethods
5454
public static string GetEventHandlerValue<T>(string value) where T : Microsoft.AspNetCore.Components.UIEventArgs { throw null; }
5555
public static string GetValue(System.DateTime value, string format) { throw null; }
5656
public static T GetValue<T>(T value) { throw null; }
57-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<bool> setter, bool existingValue) { throw null; }
58-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<System.DateTime> setter, System.DateTime existingValue) { throw null; }
59-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<System.DateTime> setter, System.DateTime existingValue, string format) { throw null; }
60-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<decimal> setter, decimal existingValue) { throw null; }
61-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<double> setter, double existingValue) { throw null; }
62-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<int> setter, int existingValue) { throw null; }
63-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<long> setter, long existingValue) { throw null; }
64-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<bool?> setter, bool? existingValue) { throw null; }
65-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<decimal?> setter, decimal? existingValue) { throw null; }
66-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<double?> setter, double? existingValue) { throw null; }
67-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<int?> setter, int? existingValue) { throw null; }
68-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<long?> setter, long? existingValue) { throw null; }
69-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<float?> setter, float? existingValue) { throw null; }
70-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<float> setter, float existingValue) { throw null; }
71-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler(System.Action<string> setter, string existingValue) { throw null; }
72-
public static System.Action<Microsoft.AspNetCore.Components.UIEventArgs> SetValueHandler<T>(System.Action<T> setter, T existingValue) { throw null; }
7357
}
7458
[System.AttributeUsageAttribute(System.AttributeTargets.Property, AllowMultiple=false, Inherited=true)]
7559
public sealed partial class CascadingParameterAttribute : System.Attribute

src/Components/Components/src/BindMethods.cs

Lines changed: 0 additions & 224 deletions
Original file line numberDiff line numberDiff line change
@@ -86,229 +86,5 @@ public static EventCallback<T> GetEventHandlerValue<T>(EventCallback<T> value)
8686
{
8787
return value;
8888
}
89-
90-
/// <summary>
91-
/// Not intended to be used directly.
92-
/// </summary>
93-
public static Action<UIEventArgs> SetValueHandler(Action<string> setter, string existingValue)
94-
{
95-
return eventArgs =>
96-
{
97-
setter((string)((UIChangeEventArgs)eventArgs).Value);
98-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
99-
};
100-
}
101-
102-
/// <summary>
103-
/// Not intended to be used directly.
104-
/// </summary>
105-
public static Action<UIEventArgs> SetValueHandler(Action<bool> setter, bool existingValue)
106-
{
107-
return eventArgs =>
108-
{
109-
setter((bool)((UIChangeEventArgs)eventArgs).Value);
110-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
111-
};
112-
}
113-
114-
/// <summary>
115-
/// Not intended to be used directly.
116-
/// </summary>
117-
public static Action<UIEventArgs> SetValueHandler(Action<bool?> setter, bool? existingValue)
118-
{
119-
return eventArgs =>
120-
{
121-
setter((bool?)((UIChangeEventArgs)eventArgs).Value);
122-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
123-
};
124-
}
125-
126-
/// <summary>
127-
/// Not intended to be used directly.
128-
/// </summary>
129-
public static Action<UIEventArgs> SetValueHandler(Action<int> setter, int existingValue)
130-
{
131-
return eventArgs =>
132-
{
133-
setter(int.Parse((string)((UIChangeEventArgs)eventArgs).Value));
134-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
135-
};
136-
}
137-
138-
/// <summary>
139-
/// Not intended to be used directly.
140-
/// </summary>
141-
public static Action<UIEventArgs> SetValueHandler(Action<int?> setter, int? existingValue)
142-
{
143-
return eventArgs =>
144-
{
145-
setter(int.TryParse((string)((UIChangeEventArgs)eventArgs).Value, out var value) ? value : (int?)null);
146-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
147-
};
148-
}
149-
150-
/// <summary>
151-
/// Not intended to be used directly.
152-
/// </summary>
153-
public static Action<UIEventArgs> SetValueHandler(Action<long> setter, long existingValue)
154-
{
155-
return eventArgs =>
156-
{
157-
setter(long.Parse((string)((UIChangeEventArgs)eventArgs).Value));
158-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
159-
};
160-
}
161-
162-
/// <summary>
163-
/// Not intended to be used directly.
164-
/// </summary>
165-
public static Action<UIEventArgs> SetValueHandler(Action<long?> setter, long? existingValue)
166-
{
167-
return eventArgs =>
168-
{
169-
setter(long.TryParse((string)((UIChangeEventArgs)eventArgs).Value, out var value) ? value : (long?)null);
170-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
171-
};
172-
}
173-
174-
/// <summary>
175-
/// Not intended to be used directly.
176-
/// </summary>
177-
public static Action<UIEventArgs> SetValueHandler(Action<float> setter, float existingValue)
178-
{
179-
return eventArgs =>
180-
{
181-
setter(float.Parse((string)((UIChangeEventArgs)eventArgs).Value));
182-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
183-
};
184-
}
185-
186-
/// <summary>
187-
/// Not intended to be used directly.
188-
/// </summary>
189-
public static Action<UIEventArgs> SetValueHandler(Action<float?> setter, float? existingValue)
190-
{
191-
return eventArgs =>
192-
{
193-
setter(float.TryParse((string)((UIChangeEventArgs)eventArgs).Value, out var value) ? value : (float?)null);
194-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
195-
};
196-
}
197-
198-
/// <summary>
199-
/// Not intended to be used directly.
200-
/// </summary>
201-
public static Action<UIEventArgs> SetValueHandler(Action<double> setter, double existingValue)
202-
{
203-
return eventArgs =>
204-
{
205-
setter(double.Parse((string)((UIChangeEventArgs)eventArgs).Value));
206-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
207-
};
208-
}
209-
210-
/// <summary>
211-
/// Not intended to be used directly.
212-
/// </summary>
213-
public static Action<UIEventArgs> SetValueHandler(Action<double?> setter, double? existingValue)
214-
{
215-
return eventArgs =>
216-
{
217-
setter(double.TryParse((string)((UIChangeEventArgs)eventArgs).Value, out var value) ? value : (double?)null);
218-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
219-
};
220-
}
221-
222-
/// <summary>
223-
/// Not intended to be used directly.
224-
/// </summary>
225-
public static Action<UIEventArgs> SetValueHandler(Action<decimal> setter, decimal existingValue)
226-
{
227-
return eventArgs =>
228-
{
229-
setter(decimal.Parse((string)((UIChangeEventArgs)eventArgs).Value));
230-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
231-
};
232-
}
233-
234-
/// <summary>
235-
/// Not intended to be used directly.
236-
/// </summary>
237-
public static Action<UIEventArgs> SetValueHandler(Action<decimal?> setter, decimal? existingValue)
238-
{
239-
return eventArgs =>
240-
{
241-
setter(decimal.TryParse((string)((UIChangeEventArgs)eventArgs).Value, out var tmpvalue) ? tmpvalue : (decimal?)null);
242-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
243-
};
244-
}
245-
246-
/// <summary>
247-
/// Not intended to be used directly.
248-
/// </summary>
249-
public static Action<UIEventArgs> SetValueHandler(Action<DateTime> setter, DateTime existingValue)
250-
{
251-
return eventArgs =>
252-
{
253-
SetDateTimeValue(setter, ((UIChangeEventArgs)eventArgs).Value, null);
254-
};
255-
}
256-
257-
/// <summary>
258-
/// Not intended to be used directly.
259-
/// </summary>
260-
public static Action<UIEventArgs> SetValueHandler(Action<DateTime> setter, DateTime existingValue, string format)
261-
{
262-
return eventArgs =>
263-
{
264-
SetDateTimeValue(setter, ((UIChangeEventArgs)eventArgs).Value, format);
265-
};
266-
}
267-
268-
/// <summary>
269-
/// Not intended to be used directly.
270-
/// </summary>
271-
public static Action<UIEventArgs> SetValueHandler<T>(Action<T> setter, T existingValue)
272-
{
273-
if (!typeof(T).IsEnum)
274-
{
275-
throw new ArgumentException($"'bind' does not accept values of type {typeof(T).FullName}. To read and write this value type, wrap it in a property of type string with suitable getters and setters.");
276-
}
277-
278-
return eventArgs =>
279-
{
280-
var value = (string)((UIChangeEventArgs)eventArgs).Value;
281-
var parsed = (T)Enum.Parse(typeof(T), value);
282-
setter(parsed);
283-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
284-
};
285-
}
286-
287-
private static void SetDateTimeValue(Action<DateTime> setter, object objValue, string format)
288-
{
289-
var stringValue = (string)objValue;
290-
var parsedValue = string.IsNullOrEmpty(stringValue) ? default
291-
: format != null && DateTime.TryParseExact(stringValue, format, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out var parsedExact) ? parsedExact
292-
: DateTime.Parse(stringValue);
293-
setter(parsedValue);
294-
_ = DispatchEventAsync(setter.Target, EventCallbackWorkItem.Empty, UIEventArgs.Empty);
295-
}
296-
297-
// This is a temporary polyfill for these old-style bind methods until they can be removed.
298-
// This doesn't do proper error handling (usage is fire-and-forget).
299-
private static Task DispatchEventAsync(object component, EventCallbackWorkItem callback, object arg)
300-
{
301-
if (component == null)
302-
{
303-
throw new ArgumentNullException(nameof(component));
304-
}
305-
306-
if (component is IHandleEvent handler)
307-
{
308-
return handler.HandleEventAsync(callback, arg);
309-
}
310-
311-
return callback.InvokeAsync(arg);
312-
}
31389
}
31490
}

src/Components/Components/src/Forms/InputComponents/InputCheckbox.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
2929
builder.AddAttribute(3, "id", Id);
3030
builder.AddAttribute(4, "class", CssClass);
3131
builder.AddAttribute(5, "checked", BindMethods.GetValue(CurrentValue));
32-
builder.AddAttribute(6, "onchange", BindMethods.SetValueHandler(__value => CurrentValue = __value, CurrentValue));
32+
builder.AddAttribute(6, "onchange", EventCallback.Factory.CreateBinder<bool>(this, __value => CurrentValue = __value, CurrentValue));
3333
builder.CloseElement();
3434
}
3535

src/Components/Components/src/Forms/InputComponents/InputDate.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
2828
builder.AddAttribute(3, "id", Id);
2929
builder.AddAttribute(4, "class", CssClass);
3030
builder.AddAttribute(5, "value", BindMethods.GetValue(CurrentValueAsString));
31-
builder.AddAttribute(6, "onchange", BindMethods.SetValueHandler(__value => CurrentValueAsString = __value, CurrentValueAsString));
31+
builder.AddAttribute(6, "onchange", EventCallback.Factory.CreateBinder<string>(this, __value => CurrentValueAsString = __value, CurrentValueAsString));
3232
builder.CloseElement();
3333
}
3434

src/Components/Components/src/Forms/InputComponents/InputNumber.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
6868
builder.AddAttribute(4, "id", Id);
6969
builder.AddAttribute(5, "class", CssClass);
7070
builder.AddAttribute(6, "value", BindMethods.GetValue(CurrentValueAsString));
71-
builder.AddAttribute(7, "onchange", BindMethods.SetValueHandler(__value => CurrentValueAsString = __value, CurrentValueAsString));
71+
builder.AddAttribute(7, "onchange", EventCallback.Factory.CreateBinder<string>(this, __value => CurrentValueAsString = __value, CurrentValueAsString));
7272
builder.CloseElement();
7373
}
7474

src/Components/Components/src/Forms/InputComponents/InputSelect.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
2424
builder.AddAttribute(2, "id", Id);
2525
builder.AddAttribute(3, "class", CssClass);
2626
builder.AddAttribute(4, "value", BindMethods.GetValue(CurrentValueAsString));
27-
builder.AddAttribute(5, "onchange", BindMethods.SetValueHandler(__value => CurrentValueAsString = __value, CurrentValueAsString));
27+
builder.AddAttribute(5, "onchange", EventCallback.Factory.CreateBinder<string>(this, __value => CurrentValueAsString = __value, CurrentValueAsString));
2828
builder.AddContent(6, ChildContent);
2929
builder.CloseElement();
3030
}

src/Components/Components/src/Forms/InputComponents/InputText.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
2929
builder.AddAttribute(2, "id", Id);
3030
builder.AddAttribute(3, "class", CssClass);
3131
builder.AddAttribute(4, "value", BindMethods.GetValue(CurrentValue));
32-
builder.AddAttribute(5, "onchange", BindMethods.SetValueHandler(__value => CurrentValue = __value, CurrentValue));
32+
builder.AddAttribute(5, "onchange", EventCallback.Factory.CreateBinder<string>(this, __value => CurrentValueAsString = __value, CurrentValueAsString));
3333
builder.CloseElement();
3434
}
3535

src/Components/Components/src/Forms/InputComponents/InputTextArea.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
2929
builder.AddAttribute(2, "id", Id);
3030
builder.AddAttribute(3, "class", CssClass);
3131
builder.AddAttribute(4, "value", BindMethods.GetValue(CurrentValue));
32-
builder.AddAttribute(5, "onchange", BindMethods.SetValueHandler(__value => CurrentValue = __value, CurrentValue));
32+
builder.AddAttribute(5, "onchange", EventCallback.Factory.CreateBinder<string>(this, __value => CurrentValueAsString = __value, CurrentValueAsString));
3333
builder.CloseElement();
3434
}
3535

src/Components/Components/test/RendererTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3684,11 +3684,11 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
36843684
builder.OpenElement(0, "input");
36853685
builder.AddAttribute(1, "type", "checkbox");
36863686
builder.AddAttribute(2, "value", BindMethods.GetValue(CheckboxEnabled));
3687-
builder.AddAttribute(3, "onchange", BindMethods.SetValueHandler(__value => CheckboxEnabled = __value, CheckboxEnabled));
3687+
builder.AddAttribute(3, "onchange", EventCallback.Factory.CreateBinder<bool>(this, __value => CheckboxEnabled = __value, CheckboxEnabled));
36883688
builder.CloseElement();
36893689
builder.OpenElement(4, "input");
36903690
builder.AddAttribute(5, "value", BindMethods.GetValue(SomeStringProperty));
3691-
builder.AddAttribute(6, "onchange", BindMethods.SetValueHandler(__value => SomeStringProperty = __value, SomeStringProperty));
3691+
builder.AddAttribute(6, "onchange", EventCallback.Factory.CreateBinder<string>(this, __value => SomeStringProperty = __value, SomeStringProperty));
36923692
builder.AddAttribute(7, "disabled", !CheckboxEnabled);
36933693
builder.CloseElement();
36943694
}

src/Components/test/testassets/TestServer/Startup.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,6 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
7272
});
7373
});
7474

75-
app.UseRouting();
76-
77-
app.UseEndpoints(endpoints =>
78-
{
79-
endpoints.MapControllers();
80-
endpoints.MapRazorPages();
81-
});
82-
8375
// Separately, mount a prerendered server-side Blazor app on /prerendered
8476
app.Map("/prerendered", subdirApp =>
8577
{
@@ -92,6 +84,14 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
9284
endpoints.MapBlazorHub();
9385
});
9486
});
87+
88+
app.UseRouting();
89+
90+
app.UseEndpoints(endpoints =>
91+
{
92+
endpoints.MapControllers();
93+
endpoints.MapRazorPages();
94+
});
9595
}
9696
}
9797
}

0 commit comments

Comments
 (0)