如何按值比较 System.Object 类型的两个值?

发布于 2024-12-28 08:01:51 字数 512 浏览 0 评论 0原文

如何按值比较 System.Object 类型的两个值?

如何执行以下操作:

void Validate(Type t, Object obj)//t is always a Basic type like System.Int32, System.DateTime, System.String, etc.
{
    Object value = Convert.ChangeType(obj, t);
    Object minValue = Convert.ChangeType(this.MinValue.Value, t);
    Object maxValue = Convert.ChangeType(this.MaxValue.Value, t);

    if (!(minValue >= value && value >= maxValue))
    {
        throw new Exception(".....err...message.....");
    }
}

How to compare two values of type System.Object by value?

How to do the following:

void Validate(Type t, Object obj)//t is always a Basic type like System.Int32, System.DateTime, System.String, etc.
{
    Object value = Convert.ChangeType(obj, t);
    Object minValue = Convert.ChangeType(this.MinValue.Value, t);
    Object maxValue = Convert.ChangeType(this.MaxValue.Value, t);

    if (!(minValue >= value && value >= maxValue))
    {
        throw new Exception(".....err...message.....");
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

℉絮湮 2025-01-04 08:01:51

Int32 等基本值类型实现 IComparable

IComparable value    = (IComparable) Convert.ChangeType (obj, t) ;
IComparable minValue = ...
IComparable maxValue = ...

if (minValue.CompareTo (value) > 0 || maxValue.CompareTo (value) < 0)
    throw ...

Basic value types like Int32 implement IComparable:

IComparable value    = (IComparable) Convert.ChangeType (obj, t) ;
IComparable minValue = ...
IComparable maxValue = ...

if (minValue.CompareTo (value) > 0 || maxValue.CompareTo (value) < 0)
    throw ...
这个俗人 2025-01-04 08:01:51

System.Object 因为没有可以比较的属性值。当然,您可以检查每个对象都有的函数返回的值。

System.Object as got no propertiese whoes values you can compare. surely enuf you can check the values that are returned by the function every object has.

○闲身 2025-01-04 08:01:51

您可以利用这样一个事实:您列出的所有类型都实现了 IComparable 接口。

You could use the fact that the types you have listed all implement the IComparable interface.

來不及說愛妳 2025-01-04 08:01:51

使用动态代替 object/var ...

dynamic minValue = Convert.ChangeType(this.MinValue.Value, t);
dynamic maxValue = Convert.ChangeType(this.MaxValue.Value, t);

Instead of object/var use dynamic ...

dynamic minValue = Convert.ChangeType(this.MinValue.Value, t);
dynamic maxValue = Convert.ChangeType(this.MaxValue.Value, t);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文