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内部工作,因此与定制提供商之间没有有趣的业务。您最好使用常量
我使用了比属性更灵活的属性。显然更容易测试。属性参数可以是
const
成员。最好将它们称为幻值,因为它们可以是任意常量的就地定义值。@ani,在这种情况下,幻数是一个PK,这就是为什么我要查找它,而不是将其编码为常量。
[RequiredIf("CitizenshipId", GetId("SA Citizen")]