看起来有点长篇大论,但是:
很高兴有任何缩短它的方法!
@typeparam TValue
<div>
<button class="btn btn-danger" @onclick=SpinDown>-</button>
<button class="btn btn-success" @onclick=SpinUp>+</button>
</div>
<div>
Value = @Value?.ToString()
</div>
@code {
[Parameter]
public TValue? Value { get; set; }
[Parameter]
public EventCallback<TValue> ValueChanged { get; set; }
private void SpinUp()
{
TValue value;
switch (Value)
{
case int val:
val++;
value = (TValue)Convert.ChangeType(val, typeof(TValue));
break;
case long val:
val++;
value = (TValue)Convert.ChangeType(val, typeof(TValue));
break;
case short val:
val++;
value = (TValue)Convert.ChangeType(val, typeof(TValue));
break;
case decimal val:
val++;
value = (TValue)Convert.ChangeType(val, typeof(TValue));
break;
case float val:
val++;
value = (TValue)Convert.ChangeType(val, typeof(TValue));
break;
case double val:
val++;
value = (TValue)Convert.ChangeType(val, typeof(TValue));
break;
default:
throw new Exception("Can't do maths operations on the type suplied");
};
ValueChanged.InvokeAsync(value);
}
private void SpinDown()
{
TValue value;
switch (Value)
{
case int val:
val--;
value = (TValue)Convert.ChangeType(val, typeof(TValue));
break;
case long val:
val--;
value = (TValue)Convert.ChangeType(val, typeof(TValue));
break;
case short val:
val--;
value = (TValue)Convert.ChangeType(val, typeof(TValue));
break;
case decimal val:
val--;
value = (TValue)Convert.ChangeType(val, typeof(TValue));
break;
case float val:
val--;
value = (TValue)Convert.ChangeType(val, typeof(TValue));
break;
case double val:
val--;
value = (TValue)Convert.ChangeType(val, typeof(TValue));
break;
default:
throw new Exception("Can't do maths operations on the type suplied");
};
ValueChanged.InvokeAsync(value);
}
}
我的测试页面:
@page "/"
<PageTitle>Index</PageTitle>
<h1>Hello, world!</h1>
Welcome to your new app.
<SurveyPrompt Title="How is Blazor working for you?" />
<Spinner @bind-Value=value/>
<div>
Value : @value.ToString()
</div>
@code {
private double value = 0;
}