2012-03-12 27 views
1

在某些情況下,我需要確定一個類型,我只是不知道類型是什麼。例如,DevExpress插件在獲取數據時請求一個類型。有沒有什麼方法可以確定一個未知類型?

e.Data.GetDataPresent(typeof(DataRow))

予設定的數據源作爲一個數據表。我不知道所提供的數據實際上是一個String,DataRow,DataColumn或其他數據。

有沒有什麼方法可以確定這種類型,而不必在調試器/立即窗口中逐個破解所有的可能性?

UPDATE
在這種情況下,它是一個winform應用程序事件

private void grid_VDragOver(object sender, System.Windows.Forms.DragEventArgs e) 
     { 
      if (e.Data.GetDataPresent(typeof(DataColumn)))//DataColumn is just a guess..no idea 
       e.Effect = DragDropEffects.Move; 
      else 
       e.Effect = DragDropEffects.None; 
     } 
+0

你沒有一個你可以使用'GetType()'的實例嗎? – 2012-03-12 15:21:57

+0

@PaoloFalabella - 好吧,不直接沒有。它是一個事件,我更新了這個問題。 – 2012-03-12 15:26:06

回答

2

您可以使用object.GetType() - 所有對象實現它,所以你可以簡單地使用:

e.Data.GetDataPresent(variable.GetType()) 

更新:

通過修訂(拖放數據只能通過IDataObject訪問且無變量),此答案僅限於OP。對於那些沒有這些確切限制條件的人,我會保留在這裏。

+0

+1 - 這是我正在尋找的東西。不確定它會起作用,因爲我沒有變量。更新的問題。 – 2012-03-12 15:27:17

+0

你回答了這個問題。現在我知道我需要從DevExpress文檔/支持中獲取信息。謝謝 – 2012-03-12 15:39:03

2

如果您有一個未知類型的變量,您可以調用該變量的GetType()(該方法對所有對象都是通用的),並且您將獲得一個表示該變量的派生類型最多的Type實例。

在這種情況下,聽起來好像你正在試圖詢問這個DataObject數據是否可用某種形式,可以表示爲你傳入的類型。在這種情況下,你應該知道你想要處理什麼(字符串,數字,日期時間等),你應該指定。如果你不知道你想從DataObject中找到什麼,那麼它不會很有幫助。

相關問題