我在實現靜態輔助類,類似的NUnit的Assert
一個非常簡單的「契約式設計」的早期過程很。理想情況下,我期望做的是傳遞一個表達式,檢查它是否爲真,如果不是,則拋出具有任何參數或錯誤消息的特定異常。 在一個理想的世界我會做這樣的事情:契約式設計,和一般例外
// ideal
Assert.True<ArgumentNullException>(user != null, "User", "User cannot be null");
// not so ideal
Assert.True(user != null, new ArgumentNullException("User", "User cannot be null");
現在,我的問題是,在Assert.True<T>
的約束是Exception, new()
,爲了讓我來創建所需類型的新的異常。我現在遇到的關鍵問題是,首先通用構造不允許參數,其次,在Exception
構造最屬性僅是GET。
任何幫助是極大的讚賞,謝謝。
嗯,這是一個非常優雅的解決方案,我喜歡它,但理想的我爲了可讀性。謝謝你! – Richard 2012-04-03 10:56:57
嘿,是啊,這不是你的「不理想」的情況了大規模的改進,但我不認爲你可以得到沒有一些重大的黑客/巫術更接近。 – mdm 2012-04-03 11:04:10
@Richard,以提高可讀性,你可以添加一堆的常見場景輔助方法(如參數空/無效等),例如'ArgAssert.NotNull(用戶, 「用戶」)'或'ArgAssert.Valid(用戶!= NULL, 「用戶」)'! – VinayC 2012-04-03 11:06:06