本文介绍了为什么"十进制"不是一个有效的属性参数类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这实在是令人难以置信的,但真正的。这code是行不通的:

  [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)
公共类范围:属性
{
    公共小数最大{获得;组; }
    公共小数敏{获得;组; }
}

公共类项目
{
    [范围(最小值=0米,最大=千米)] //编译错误:'民'不是一个有效的命名特性参数,因为它不是一个有效的属性参数类型
    公共十进制总{获得;组; }
}
 

虽然这个作品:

  [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)
公共类范围:属性
{
    公共双马克斯{获得;组; }
    公共双民{获得;组; }
}

公共类项目
{
    [范围(最小值= 0D,最大= 1000D)
    公共十进制总{获得;组; }
}
 

谁能告诉我,为什么双是OK,而小数则不是。

解决方案

从this通过 JaredPar

答案

It is really unbelievable but real. This code will not work:

[AttributeUsage(AttributeTargets.Property|AttributeTargets.Field)]
public class Range : Attribute
{
    public decimal Max { get; set; }
    public decimal Min { get; set; }
}

public class Item
{
    [Range(Min=0m,Max=1000m)]  //compile error:'Min' is not a valid named attribute argument because it is not a valid attribute parameter type
    public decimal Total { get; set; }
}

While this works:

[AttributeUsage(AttributeTargets.Property|AttributeTargets.Field)]
public class Range : Attribute
{
    public double Max { get; set; }
    public double Min { get; set; }
}

public class Item
{
    [Range(Min=0d,Max=1000d)]
    public decimal Total { get; set; }
}

Who can tell me why double is OK while decimal is not.

解决方案

Taken from this answer by JaredPar.

这篇关于为什么"十进制"不是一个有效的属性参数类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 19:55