2012-11-23 22 views
0
Imports System.Runtime.CompilerServices 

Public Module ColorExtension 
    <Extension()> _ 
    Public Function ToColor(ByVal argb As UInteger) As Global.System.Windows.Media.Color 
     Return Global.System.Windows.Media.Color.FromArgb(CByte((argb And -16777216) >> &H18), CByte((argb And &HFF0000) >> &H10), CByte((argb And &HFF00) >> 8), CByte(argb And &HFF)) 
    End Function 
End Module 



Public Class Test 
    Private Sub TestExt() 
     Dim Col As System.Windows.Media.Color 
     Col = System.Windows.Media.Color.ToColor(100)'<-- Error 
     Col.ToColor(100)'<-- Error 
    End Sub 
End Class 

當我使用此代碼,我得到這個例外 錯誤1「ToColor」不是「System.Windows.Media.Color」中的一員。 C:... \ ColorExtension.vb拓在WP7

請任何建議如何開發擴展功能,如這種顏色擴展一。

回答

1
  1. 擴展方法可以在類的對象上觸發,而不是類本身。
  2. 您的擴展方法設置爲UInteger類,而不是Color。你擴展的類型是第一個方法參數的類型。
  3. 您不能將新方法添加到可以像您嘗試執行的類一樣的方法。

您可以通過兩種方式使用您的擴展方法:

  1. 標準方法調用:ColorExtension.ToColor(100)
  2. 使用 擴展方法的語法:100.ToColor()
+0

感謝。你能分享任何代碼片段嗎? – Nasenbaer

+0

嗯,我已經做了? – MarcinJuraszek

+0

我從未使用過Extension。我不知道在哪裏放置我的代碼。我無法看到代碼片斷,因爲我知道在哪裏放置它。你說「在對象上」。這代表什麼意思? – Nasenbaer