VB.Netコードに関連する質問があります。VB.NetエクステンションをDataTable(インデックス)として作成
私たちが使用できるのDataTableていることがわかり:私は、この機能が拡張して実現できることがわかりインテリセンスで
DataTable(0) ' This return a DataRow with the selected index
...しかし、私は拡張機能を作成する場合は、必ず私が参照してください必要があります使用前の拡張機能
Public Module asdadsdas
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)>
<System.Runtime.CompilerServices.ExtensionAttribute()>
Friend Function MyExt(ByVal pMyObject As MyObject, ByVal ColumnName As String) As MyObject.ColumnData
Return pMyObject.Columns(0)
End Function
End Module
Public Class MyObject
Friend Structure ColumnData
Friend vNombre As String
Friend vApellido As String
Friend vTelefono As String
Public Property Nombre As String
Get
Return Me.vNombre
End Get
Set(ByVal value As String)
Me.vNombre = value
End Set
End Property
End Structure
Friend Columns() As ColumnData
Public Sub add(ByVal MyColumn As String)
ReDim Columns(0)
Columns(0).vNombre = MyColumn
End Sub
End Class
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Test As New MyObject
Test.add("TEST 001")
' HERE IS THE PROBLEM
Test("TEST 001")
' CORRECT USE
Test.MyExt("TEST 001")
End Sub
End Class
私の具体的な質問:どのように特定のオブジェクトでデフォルトの拡張子を作ることができますか?
@competent_tech:男あなたはあなたのコメントで感謝しています!
これは私の問題の解決策です:columnDataは
Default Property Item(ByVal ColumnName As String) As ColumnData
Get
Return Data(0)
End Get
Set(ByVal value As ColumnData)
End Set
End Property
Public Sub add(ByVal Name As String, ByVal LastName As String, ByVal Phone As String)
If Data Is Nothing Then
ReDim Data(0)
Data(0) = New ColumnData
End If
With Data(0)
.Name = Name
.LastName = LastName
.Phone = Phone
End With
End Sub
エンドクラス
パブリック・クラスとして
Public Class ColumnData
Friend Name As String
Friend LastName As String
Friend Phone As String
エンドクラス
パブリック・クラスMyColumns フレンドのデータ() Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Test As New MyColumns
Test.add("Name 001", "bolanos.m", "500-2004-1000")
Debug.Print(Test("Name 001").LastName & " - " & Test("Name 001").Phone)
' bolanos.m - 500-2004-1000
Test("Name").LastName = "BOLANOS.M MODIFY"
Debug.Print(Test("Name 001").LastName & " - " & Test("Name 001").Phone)
' BOLANOS.M(MODIFY - 500 - 2004 - 1000)
End Sub
エンドクラス
あなたがすることはできません。データテーブルをカプセル化しようとするか、またはそれを継承することがあります。しかし、拡張として、そのコンセプトはプロパティに適用されるので、 "デフォルト"を作成することはできません.net 4.0の拡張プロパティを作成することはできません –