我创建一个异常类这样的:如何避免在以下代码中强制转换为(ServiceException)?
public class ServiceException : ApplicationException {
public Dictionary<string, string> Errors { get; set; }
public ServiceException(Exception ex) : base("Service Exception", ex) {
Errors = new Dictionary<string, string>();
}
public ServiceException() : this(null) {}
}
下面的代码失败:
protected void log(Exception ex)
{
if (ex is ServiceException)
{
var y = (ServiceException)
ModelState.Merge(ex.Errors);
}
else
{
Trace.Write(ex);
ModelState.AddModelError("", "Database access error: " + ex.Message);
}
}
它生成上编译以下错误:
错误5 'System.Exception的'不包含“错误” 的定义,并且没有接受 类型的第一个参数的扩展方法'Errors''System.Exception'c乌尔德找到(是否缺少using指令 或程序集引用?)
我通过以下操作固定它:
if (ex is ServiceException)
{
var y = (ServiceException)ex;
ModelState.Merge(y.Errors);
}
有一些办法,我可以使用避免这种乱码一个变量y然后铸造它?没有声明中间变量y,代码不会通过语法检查。
你需要口齿不清讲:ModelState.Merge(((ServiceException)除息).Errors); – 2011-12-20 04:45:28
在C#中,一种方法或者你必须使用一个强制转换来使编译器感到高兴。 – Roman 2011-12-20 04:47:02