public class FailerAttr : Attribute { public FailerAttr(string s) { throw new Exception("I should definitely fail!"); }}
在单元测试项目中,我有以下内容:
using Microsoft.VisualStudio.TestTools.UnitTesting;[TestClass]public class Test { [TestMethod] public voID GoFail() { // Make sure attribute will get initialized new Failer(); } private class Failer { [FailerAttr("")] public int Prop { get; set; } }}
当我运行测试时,它会成功.所以,问题是:
>为什么它没有失败?
>从属性中抛出异常真是个坏主意吗?因为我认为我需要.
一些环境信息(以防万一相关):
>单元测试通过ReSharper的单元测试运行器(R#v8.2.0.2160)运行
> Visual studio v11.0.61030.0
这是一种要求使程序失败的属性的方法:
var attr = Attribute.GetCustomAttribute(typeof(Failer).GetProperty("Prop"),typeof(FailerAttr));
此代码使CLR实例化FailerAttr,从而触发异常.
Demo on ideone.
如果您不知道属性的类型,则可以使用此调用一次检索所有属性:
var allAttributes = Attribute.GetCustomAttributes(typeof(Failer).GetProperty("Prop"));
这也导致例外(demo).
总结以上是内存溢出为你收集整理的c# – 从属性构造函数中抛出异常全部内容,希望文章能够帮你解决c# – 从属性构造函数中抛出异常所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)