當我爲WinForms和ASP.NET進行用戶控件時,我發現自己爲表單上的每個屬性重複編寫了相同的代碼段,這就是:在Winforms和ASP.NET中重構
private string _url;
public string Url
{
get { return _url; }
set
{
if (_url == value)
return;
_url = value;
OnUrlChange(EventArgs.Empty);
}
}
public event EventHandler UrlChanged;
protected virtual void OnUrlChange(EventArgs e)
{
//Maybe add some extra logic here
if(UrlChanged != null)
UrlChanged(this, e);
}
有時會發生奇怪的變化。也許我會寫我自己的課程,從EventArgs
派生並使用它。
這似乎是它必須是一個共同的任務。也許我做錯了,並且有更簡單的方法來寫這個地段?但是,如果沒有,是否有任何自定義重構工具,我可以設置填寫此代碼給定屬性名稱Url
?
我不是一個.NET人,也不確定我是否理解你,但我猜你的意圖是每次更新屬性時通知另一個元素(可能是UI上的某個元素)(例如調用set *方法)。 你是對的,認爲這是非常普遍的任務,而不是努力創建一個父類或代碼片段生成器,我會看看這個行爲已經在API中實現的位置,因爲我確定它是。 – kcdragon
我會這樣想的。 .NET框架中的大多數控件都有這個或者非常類似的代碼。有幾種不同的實現方式,儘管這會使行爲不同,所以將其壓低得遠遠超過這會消除一些靈活性。 – Connell
不幸的是,我曾經反編譯過的所有.NET庫代碼遵循長期模式,並且我很確定沒有任何內置解決方案。 @ user617090:您是否使用具有此功能的平臺?它看起來如何? –