【发布时间】:2019-04-26 20:09:47
【问题描述】:
基本上我有一个特定的方法,它使用 double 和 int 值来找出我想要设置的 css 类。我在不同的地方做同样的事情,但是用 int + int 代替。
这引发了一个问题,即是否有一种好方法可以提供一个通用的解决方案。
重载本来是一种方法,但我不想为所有数字变体编写重载。
所以我想我会看看是否有一个特定于数字的接口类型可以用作泛型类型约束 - 但我没有找到(因为任何东西都可以实现 IConvertible?)
int32反编译结果:
#if GENERICS_WORK
public struct Int32 : IComparable, IFormattable, IConvertible
, IComparable<Int32>, IEquatable<Int32>
/// , IArithmetic<Int32>
#else
public struct Int32 : IComparable, IFormattable, IConvertible
#endif
没有,没有号码界面。
这就是我想出的——它工作得很好,但也接受对潜在非数字对象的调用。有关如何使该方法更具限制性的任何建议?
public static string GetThresholdColorClass(IConvertible desiredThreshold, IConvertible actualProgress)
{
var actual = actualProgress.ToDouble(CultureInfo.InvariantCulture);
var desired = desiredThreshold.ToDouble(CultureInfo.InvariantCulture);
if (actual >= desired)
return "green";
if (actual <= 0)
return "red";
return "yellow";
}
【问题讨论】:
标签: c#