考慮以下問題獲得對實例的引用,其構造已經拋出的異常
當設計一個框架,一個接口暴露一些事件呈現
interface I
{
event MyEventHandler MyEvent
}
此接口將最終被很多人實現不同的第三方供應商,並可能被不同的客戶使用。
由於每個供應商可能新向上事件參數無效的數據,我有作爲框架作者爲事件參數水平的唯一控制,所以我想以下圖案:
class MyEventArgs
{
public int? MyProperty{get;}
MyEventArgs(int arg)
{
if(arg.IsInvalidArgument())//Let's pretend that there's such an extension method
throw new ArgumentException(...)
MyProperty = arg;
}
這確保客戶端不能使用某些無賴代碼提供的無效值,因爲構造函數會拋出一個異常,因此整數將沒有賦值,使其成爲空引用。
然而,這也創造了客戶端代碼的開銷,因爲現在的客戶必須檢查的HasValue然後訪問值,使得EventArgument不太人性化。這變得更加繁瑣時的參數量每事件爭論增長。
我可以在技術上去除的問號,這將擺脫可空廢話的客戶,因爲在我看來,有上帝的綠色地球沒有辦法獲得這樣的實例的引用,但問題是,這種情況雖然容易測試,但可能有我從未想到的邊緣情況,因此我的問題。
是否有任何可能的方式來獲取對其構造函數已引發異常並將其傳遞給事件偵聽器的實例的引用?
我真的不清楚你想問什麼。首先,你在說什麼「開銷」?其次,你想要得到什麼「參考」? – CodeCaster
@CodeCaster我編輯了我的問題。感謝您將注意力引入我的注意力..開銷是在事件參數類中爲每個屬性使用Nullable API,引用是構造函數引發異常的引用。 –