- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我们正在尝试使用 Foolproof 验证注释 [RequiredIf]
来检查是否需要电子邮件地址。我们还创建了一个枚举以避免在 ViewModel 中使用查找表 ID。代码如下所示:
public enum NotificationMethods {
Email = 1,
Fax = 2
}
然后在 ViewModel 中:
[RequiredIf("NotificationMethodID", NotificationMethods.Email)]
public string email {get; set;}
在此场景中,当电子邮件未填写但被选为通知类型时,我们不会收到错误消息。相反,这按预期工作:
[RequiredIf("NotificationMethodID", 1)]
public string email {get; set;}
我发现的唯一其他引用资料是:https://foolproof.codeplex.com/workitem/17245
最佳答案
鉴于您的方法 NotificationMethodID
正在返回一个 int
,您的检查失败的原因是,在 c# 中,每个 enum
是自己的类型,继承自System.Enum
. IE。如果你这样做
var value = NotificationMethods.Email;
string s = value.GetType().Name;
您将看到 s
的值为 "NotificationMethods"
而不是 "Int32"
。
如果您尝试直接检查 int 与 enum 的相等性,则会出现编译器错误:
var same = (1 == NotificationMethods.Email); // Gives the compiler error "Operator '==' cannot be applied to operands of type 'int' and 'NotificationMethods'"
如果你box首先枚举和 int 值(这是将它们传递给 RequiredIfAttribute
的构造函数时发生的情况)然后没有编译器错误但是 Equals()
返回 false,因为类型不同:
var same = ((object)1).Equals((object)NotificationMethods.Email);
Debug.WriteLine(same) // Prints "False".
要检查基础整数值的相等性,您可以在装箱前将 NotificationMethods.Email
显式转换为整数:
var same = ((object)1).Equals((object)((int)NotificationMethods.Email));
Debug.WriteLine(same); // Prints "True"
并且在属性应用中:
[RequiredIf("NotificationMethodID", (int)NotificationMethods.Email)]
public string email {get; set;}
您还可以考虑使用 const int
值而不是枚举:
public static class NotificationMethods
{
public const int Email = 1;
public const int Fax = 2;
}
关于c# - 将万无一失的 RequiredIf 与枚举一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27283689/
我有 2 个配置文件,可能会也可能不会一起使用来运行一组测试。它们每个都需要不同的 vmargs 才能运行,但如果它们一起使用,可以将它们相互附加。 我正在寻找的是一种将 argLine 设置为其当前
当我尝试通过 Maven (surefire) 一起使用 Cucumber 和 Junit 时,报告的测试数量有误。我只有 250 个测试,但 Jenkins 向我展示了 1200 个测试。所以当我调
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 去年关闭。 Improve this
我们有大量复杂的集成测试需要运行几个小时。如何在测试运行时而不是在运行后接收 TestNG XML 报告? 最佳答案 您可以构建一个扩展 org.testng.TestListenerAdapter
######################################## # some comment # other comment ############################
基于我在 linux/include/linux/jiffies.h 中找到的代码: 41 #define time_after(a,b) \ 42 (typechec
我是一名优秀的程序员,十分优秀!