如何创建OperationAbortedException?此代码不起作用:
var ex = new OperationAbortedException("Cannot update event comment");
错误:无法访问私有构造函数'OperationAbortedException'。
答案 0 :(得分:9)
System.Data.OperationAbortException
- 班级(我假设你的意思是这个,因为你没有在你的问题中完全符合条件)。没有公共构造函数,而且是sealed
。这些都是强有力的暗示,框架设计者并不希望您为自己的目的使用该异常。据推测,因为如果你这样做,框架的某些内部工作会变得混乱。
您应该为您的目的使用不同的例外。从您传递的消息文本中可以想到以下现有异常:
从.NET框架中选择现有的异常时,请确保不要仅通过类的名称选择它。确保您阅读相应的MSDN页面以了解异常的(原始)意图。相应的文档始终以单词"抛出的异常..."开头。如果您发现该文本与您的意图相符,请重用框架中的异常(或者在最终捕获异常时从中获取更好的控制权。)
如果必须,也可以创建自己的例外类型。
答案 1 :(得分:2)
如果您正在讨论System.Data.OperationAbortedException
,那么您不能直接构建实例,也没有公共构造函数。
如果你真的想,你可以使用this answer中描述的方法使用反射,但我建议你不要这样做。这将是框架设计的腐败。
以下是您可以使用的代码,但请不要。
var ctor = typeof(OperationAbortException).GetConstructor(
BindingFlags.NonPublic|BindingFlags.Instance,
null,
new Type[0],
null);
var instance = (OperationAbortException)ctor.Invoke(null);
你必须弄清楚要使用哪个私有构造函数,如果有多个私有构造函数,以及应该将哪些属性设置为什么。没有人知道这种行为会在以后的框架版本中持续存在。
答案 2 :(得分:1)
这是不可能的。 OperationAbortedException有一个私有构造函数和一个调用该构造函数的内部静态方法。无法从另一个程序集创建新的OperationAbortedException。