有什么方法可以确定未知类型吗
本文关键字:未知 类型 什么 方法 | 更新日期: 2023-09-27 18:27:25
在某些情况下,我需要确定一个类型,但我不知道该类型是什么。例如,DevExpress插件在获取数据时请求一个类型。
e.Data.GetDataPresent(typeof(DataRow))
我将数据源设置为DataTable。我不知道存在的数据是否真的是String、DataRow、DataColumn或其他。
有没有任何方法可以在不必在调试器/即时窗口中逐个破解的情况下确定这种类型?
更新
在这种情况下,它是一个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;
}
您可以使用object.GetType()
-所有对象都实现它,所以您可以简单地使用:
e.Data.GetDataPresent(variable.GetType())
更新:
对于修订版(拖放数据只能通过IDataObject
访问,没有变量),这个答案对OP的用处有限。我将把它放在这里,供那些没有这些确切限制的人使用。
如果您有一个未知类型的变量,您可以对该变量调用GetType()(该方法对所有对象都是通用的),您将获得一个type实例,该实例表示该变量的最派生类型。
在这种情况下,听起来你是在试图询问这个DataObject,数据是否以某种形式可用,可以表示为你传递的类型。在那种情况下,你应该知道你想要使用什么(字符串、数字、DateTimes等),并且你应该指定它。如果您不知道您想要从DataObject中得到什么,那么它将不会有很大帮助。