Вопрос об использовании класса FieldInfo в .NET REFLECTION - PullRequest
0 голосов
/ 11 марта 2011
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

Dim resources As   
System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(_Class))
    Me.SqlSelectCommand1 = New System.Data.SqlClient.SqlCommand
    Me.SqlInsertCommand1 = New System.Data.SqlClient.SqlCommand
    Me.SqlUpdateCommand1 = New System.Data.SqlClient.SqlCommand
    Me.SqlDeleteCommand1 = New System.Data.SqlClient.SqlCommand
    Me.SqlDataAdapter1 = New System.Data.SqlClient.SqlDataAdapter
    Me.SqlConnection1 = New System.Data.SqlClient.SqlConnection

.....
.....



Me.SqlInsertCommand1.CommandText = resources.GetString("SqlInsertCommand1.CommandText")
    Me.SqlInsertCommand1.Connection = Me.SqlConnection1
    Me.SqlInsertCommand1.Parameters.AddRange(New System.Data.SqlClient.SqlParameter() {New System.Data.SqlClient.SqlParameter("@MAIN_FACILITY_USED", System.Data.SqlDbType.NVarChar, 0, "MAIN FACILITY USED")

Почему со следующей строкой я не могу получить доступ к этой коллекции параметров, относящихся к sqlinsertcommand, но могу получить доступ к sqlinsertcommand и самому ее командному тексту с помощью следующего кода:

Dim flags As BindingFlags = BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.NonPublic
 For Each info As FieldInfo In AssemblyInstance.GetType().GetFields(flags)
  If info.FieldType.FullName = "System.Data.SqlClient.SqlCommand" Then
    cmd = CType(info.GetValue(AssemblyInstance), SqlCommand)
   End If
Next

Как я могудостичь этой коллекции sqlparameter через fieldinfo или другие связанные классы в> NET Reflection?Кажется грубым, но любая помощь или даже предложение много значат для меня.

1 Ответ

0 голосов
/ 11 марта 2011

так что "cmd" является экземпляром "System.Data.SqlClient.SqlCommand"?! - да, это должно. тогда у него есть свойство "Параметры", которое содержит ваши параметры.

...