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

请任何建议如何开发像这个颜色扩展一这样的扩展功能。

4

1 回答 1

1
  1. 扩展方法可以在类的对象上触发,而不是类本身。
  2. 您的扩展方法是在UIntegerclass 上设置的,而不是在Color. 您扩展的类型是第一个方法参数的类型。
  3. 您不能像您尝试那样将新方法添加到可能会被触发的类中。

您可以通过两种方式使用您的扩展方法:

  1. 标准方法调用:ColorExtension.ToColor(100)
  2. 使用扩展方法语法:100.ToColor()
于 2012-11-23T11:08:19.660 回答