我编写了一个自定义操作方法选择器属性,它具有三个bool
属性。它们中的所有三个都是false
无效。其中至少有一个必须是true
。执行IsValidForRequest
后,我会检查其中至少有一个是true
。但如果没有,我应该抛出哪个例外?
一些相关代码:
public class MyCustomAttribute : ActionMethodSelectorAttribute
{
public bool Prop1 { get; set; }
public bool Prop2 { get; set; }
public bool Prop3 { get; set; }
public MyCustomAttribute()
{
this.Prop1 = true;
this.Prop2 = true;
this.Prop3 = true;
}
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
if (controllerContext == null)
{
throw new ArgumentNullException("controllerContext");
}
// at least one of them must be true
if (!this.Prop1 && !this.Prop2 && !this.Prop3)
{
throw new ?????
}
// other codez here
}
}
属性具有初始化它们同时提供属性值的良好能力,因此我必须使用IsValidForRequest
方法检查它们。
[MyCustom(Prop1 = false, Prop2 = false, Prop3 = false)]
答案 0 :(得分:8)
我可能会抛出InvalidOperationException
,因为该操作对于对象的当前状态无效。
答案 1 :(得分:0)
如果这些属性是从用户输入加载的,您可以尝试使用ArgumentException,或者您可以实现自己的custom exception投掷。
这实际上取决于这些属性的设置方式。
答案 2 :(得分:-1)
使用
向您的特定自定义消息引发异常throw new Exception("Custom Error Message");