例如: 我有一個帶有1個屬性的用戶控件(可通過屬性網格編輯)稱爲「標題」。 如果屬性「標題」爲空,有一種方法可以引發編譯時異常?或者所有的設計時間屬性都是可選的?我可以在用戶控件內強制編譯錯誤嗎?
0
A
回答
3
編譯時沒有辦法確保設置特定的屬性。如果編譯代碼但是這不是您想要的,則可以使用#error指令導致編譯時錯誤或編譯時警告#warning。
確保設置特定屬性或方法有兩種方法。首先是在構造函數中要求它,或者檢查它是否已經在後續的方法或屬性中設置。這是一個運行時檢查,不是編譯時間,正如你所說的,你在UserControl中有某些限制。
第二種方法是使用代碼分析工具,如FXCop。您可以編寫一個自定義規則來標識UserControl的所有實例,並確保已在所有實例上設置該屬性。對於Roslyn或PostSharp也可能是這樣,但我對這些工具不太熟悉。
FXCop等代碼分析工具存在的問題是學習曲線陡峭。編程語言很複雜,這些工具需要揭示覆雜性。我的建議是使用默認值,如「在此處插入標題」,或者在不太合適的情況下,即使沒有合適的默認值,也會在控件呈現描述性消息時引發異常。
查看Good way to ensure that a property on a UserControl gets set?的類似情況。
相關問題
- 1. 可以強制在c#中的自定義編譯器錯誤?
- 2. 我可以強制編譯器優化特定方法嗎?
- 3. 我可以在編譯時強制執行此操作符調用次數嗎?
- 4. 我可以強制用戶升級我的應用嗎?
- 5. JavaCompiler API強制編譯有錯誤?
- 6. 強制編譯時錯誤scons
- 7. 我可以強制C++類使用最小的空間量進行編譯嗎?
- 8. 如果組件不存在,我可以強制角度給出錯誤嗎?
- 9. 我可以強制visual studio使用mingw編譯器
- 10. 我們可以通過巡航控件編譯SQL語句嗎
- 11. F#:有人可以解釋我的編譯器錯誤嗎?
- 12. 我可以在用戶控件內創建一個內聯函數/方法嗎?
- 13. 我可以強制用戶從ejabberd註銷嗎?
- 14. 我可以強制Universal Image Loader僅在內部緩存嗎?
- 15. 可以在控制器內使用$控制器嗎?
- 16. 在SharePoint中,我可以控制用戶在頁面上以編程方式看到的內容嗎?
- 17. 我們可以強制一個C#編譯器先運行構造函數嗎?
- 18. 我可以強制用戶在Android和iOS上升級我的應用嗎?
- 19. 強制編譯時錯誤檢查模板類型以恆定
- 20. SassAndCoffee使用'裸'選項編譯CoffeeScript。我可以控制這個嗎?
- 21. 我可以強制UL成爲OL嗎?
- 22. 我可以強制WPF渲染層嗎?
- 23. 我可以強制斷言刷新嗎?
- 24. 我可以「強制」線程喚醒嗎?
- 25. 我可以強制.htaccess刷新嗎?
- 26. 可以不加控制,用戶控件
- 27. 我可以在另一個控制器內使用控制器嗎?
- 28. 我可以在setContentView調用後強制繪製嗎?
- 29. 你可以在C++中處理編譯時錯誤嗎?
- 30. 我可以強制在MySQL
AFAIK,這是不可能的 –
如何在構造函數中要求它? – Adam
這是一個用戶控件,構造函數調用是自動生成的。我需要使用無參數的構造函數。 – Stew