2013-07-29 68 views
0

我想調試的代碼如何找到數據源的類型?

binding.DataSource = this.bindingSource.DataSource; 

以下行,並希望瞭解binding.DataSource

更多信息立即窗口查詢? binding.DataSource返回

Count = 1 
[0]: {Contact Events} 

我想將binding.DataSource轉換爲我可以用intellisense查詢的東西嗎? 我應該把它投給什麼?

[更新] 綁定源創建如下;

public BindingSource GetEventTypesBindingSource() 
    { 
     try 
     { 
      DbSet<ContactEventType> dset = base.Context.ContactEventTypes; 
      IOrderedQueryable<ContactEventType> qry = dset.Where(p => p.Id > 0).OrderBy(x => x.Description); 
      qry.Load(); 
      var bindingSource = new BindingSource(); 
      bindingSource.DataSource = dset.Local.ToBindingList(); 
      return bindingSource; 
     } 
     catch (Exception ex) 
     { 
      HandleException.Show(ex); 
     } 
     return null; 
    } 

[更新] 我試着在調試器

? (List<ContactEvent>) binding.DataSource.GetType() 

以下,但得到

The type or namespace name 'List' is not valid in this scope 
+0

所有Data Binding控件的'DataSource'屬於'object'類型。沒有通過「我可以投到的東西」得到你的問題。已經在表單加載或某處,DataSource應該已被分配給控件。 – Prash

回答

1

這也許List<ContactEvent>,但你可以找到使用調試器和/或反射。

如果您在調試器的監視窗口中查看變量,它將顯示數據的類型。如果您在數據源上調用GetType,它將返回對象的類型(您也可以在調試器中執行此操作,並在那裏檢查生成的類型)。

+0

如何找出使用調試器和/或反射? –

1

首先它與答案無關,但在這種情況下您不必使用數據源(您不使用datamember屬性)。你可以直接將它綁定到集合。 集合的類型可以是實體框架集合中的自定義綁定列表實現。也許你沒有看到它的名字,因爲它沒有公開,但是投向IEnumerable應該可以工作。 如果我沒記錯,自定義實現派生自BindingList,所以BindingList也可以。