Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法避免注释属性中的幻数?_C#_.net_Asp.net Mvc_C# 4.0 - Fatal编程技术网

C# 有没有办法避免注释属性中的幻数?

C# 有没有办法避免注释属性中的幻数?,c#,.net,asp.net-mvc,c#-4.0,C#,.net,Asp.net Mvc,C# 4.0,我有这段代码,在不同的情况下都使用了来自的RequiredIf属性 但我真正想要的是 [RequiredIf("CitizenshipId", GetId("SA Citizen")] 现在,正如我认为其他开发人员也希望的那样,到目前为止,消除了神奇的数字1,我想到的只是一个查找函数参数的字符串名,该函数必须查找。把1变成“1”显然是不好的 注意:这里的常数并不理想,因为魔术数字abovr指的是DB的PK。我想这也不太理想,我应该为每个查找条目添加第三列,其中包含一个“常量代码”,因此无论PK

我有这段代码,在不同的情况下都使用了来自的
RequiredIf
属性

但我真正想要的是

[RequiredIf("CitizenshipId", GetId("SA Citizen")]
现在,正如我认为其他开发人员也希望的那样,到目前为止,消除了神奇的数字1,我想到的只是一个查找函数参数的字符串名,该函数必须查找。把1变成“1”显然是不好的

注意:这里的常数并不理想,因为魔术数字abovr指的是DB的PK。我想这也不太理想,我应该为每个查找条目添加第三列,其中包含一个“常量代码”,因此无论PK和文本是什么,我们仍然有一个不变的值


NB注意:我在Orchard内部工作,因此与定制提供商之间没有有趣的业务。

您最好使用常量

  • 无法更改现有属性
  • 对于属性,不支持泛型
  • 无法使用Lambda表达式,因为属性构造函数(和属性)只能包含常量表达式

  • 我使用了比属性更灵活的属性。显然更容易测试。

    属性参数可以是
    const
    成员。最好将它们称为幻值,因为它们可以是任意常量的就地定义值。@ani,在这种情况下,幻数是一个PK,这就是为什么我要查找它,而不是将其编码为常量。
    [RequiredIf("CitizenshipId", GetId("SA Citizen")]