私はこのような例外クラスを作成しました:次のコードで(ServiceException)にキャストする必要性を避けるにはどうすればよいですか?
エラー5 'のSystem.Exception':それはコンパイルに次のエラーが発生し
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); } }
:
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) {} }
次のコードが失敗しました'エラー'の定義が含まれていません と拡張メソッドなし 'エラー' 型の最初の引数を受け入れる 'System.Exception' c私は、次の操作を行って、それを修正(?あなたがusingディレクティブ またはアセンブリ参照が不足している)
見つけることがウルド:
if (ex is ServiceException)
{
var y = (ServiceException)ex;
ModelState.Merge(y.Errors);
}
は、私が使用して、この厄介なコードを避けることができ、いくつかの方法があります変数yとそれをキャストしますか?中間変数yを宣言しなければ、コードは構文チェックに合格しません。
:ModelState.Merge(((はServiceException)EX).Errorsを)。 –
C#一方向でもどちらでも、コンパイラを幸せにするためにはキャストを使用する必要があります。 – Roman