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

この Color 拡張機能のような拡張機能を開発する方法についてアドバイスをお願いします。

4

1 に答える 1

1
  1. 拡張メソッドは、クラス自体ではなく、クラスのオブジェクトで起動できます。
  2. 拡張メソッドはUInteger、ではなくクラスに設定されていColorます。拡張する型は、最初のメソッド パラメーターの型です。
  3. やろうとしたように起動できるクラスに新しいメソッドを追加することはできません。

拡張メソッドは次の 2 つの方法で使用できます。

  1. 標準メソッド呼び出し:ColorExtension.ToColor(100)
  2. 拡張メソッドの構文を使用する:100.ToColor()
于 2012-11-23T11:08:19.660 に答える