我有一個類,因此包含異常。重寫'is'功能
public class ExceptionWrapper
{
public string TypeName { get; set; }
public string Message { get; set; }
public string InnerException { get; set; }
public string StackTrace { get; set; }
public ExceptionWrapper() { }
public ExceptionWrapper(Exception ex)
{
TypeName = String.Format("{0}.{1}", ex.GetType().Namespace, ex.GetType().Name);
Message = ex.Message;
InnerException = ex.InnerException != null ? ex.InnerException.Message : null;
StackTrace = ex.StackTrace;
}
public bool Is(Type t)
{
var fullName = String.Format("{0}.{1}", t.Namespace, t.Name);
return fullName == TypeName;
}
}
我想覆蓋 '是' 的動作,所以不是這樣
if (ex.Is(typeof(Validator.ValidatorException)) == true)
我會這樣做
if (ex is Validator.ValidatorException)
這可能嗎?怎麼樣?
您仍然可以刪除'== TRUE'一部分,因爲你'Is'方法返回一個' bool'。此外,方法名稱指示返回值將是布爾值,因此不需要通過顯式檢查「true」來澄清它。 –
通過比較類型名稱來比較類型並不酷。如果要通過繼承(包括裝箱/拆箱)或通用方差來測試'a'是否具有與'MyType'兼容的運行時類型,通常要做的就是'a是MyType'。如果你想檢查一個確切的運行時類型,改用'a!= null && a.GetType()== typeof(MyType)'。正如我所說,不要比較字符串。 –
@Jeppe我無法獲得錯誤的原始類型,因爲它是通過WCF在此包裝類中傳輸的。 – Yacov