我試圖擴展形狀類來包含一個額外的變量,但發現類是密封的。如何使用替代實現方法簡單地實現這一點?爲什麼System.Windows.Shape.Path是密封的?
正在創建一個新類並存儲一個形狀,通過最簡單的方法傳遞所有的方法調用;我確定有更好的方法呢?
我試圖擴展形狀類來包含一個額外的變量,但發現類是密封的。如何使用替代實現方法簡單地實現這一點?爲什麼System.Windows.Shape.Path是密封的?
正在創建一個新類並存儲一個形狀,通過最簡單的方法傳遞所有的方法調用;我確定有更好的方法呢?
WPF有一個強大的概念名爲附加屬性。我不確定你在做什麼,但也許你可以通過使用這個概念來解決你的問題。要提供實例,Grid.Row
和Grid.Column
屬性是附加到Grid
內的元素的屬性。
<Grid>
...
<TextBlock Grid.Row="1" Grid.Column="2" ... />
</Grid>
TextBlock
的類是不知道由所述Grid
使用的Grid.Row
和Grid.Column
性質。
您可以閱讀更多關於attached properties on MSDN。
如果要添加的變量是您只能讀取的變量,並且是作爲Path類的其他成員計算的結果,則可以添加一個將返回值的擴展方法。
然而,如果不是這種情況:
考慮創建一個類從路徑的父繼承 - 形狀,這是不密封。 然後爲此添加一個私人路徑成員。您可以免費獲取所有形狀方法調用,只需爲Path的唯一成員提供包裝。
我應該稍微更具體;在這種情況下,變量是一個對象,所以我不認爲這會工作,但好建議 – 2009-09-27 01:37:17
這種方法如何不起作用?附加屬性可以是任何類型。 – 2009-09-27 03:06:42
我用一種稍微不同的方法去創建一個新的對象,它存儲了對路徑的引用以及對我需要鏈接到的另一個對象的引用。我相信這可以用更優雅的方式完成,但對於我正在做的事似乎工作正常。 – 2009-12-06 06:07:10