C#数据对象,类型对象为数据

C#数据对象,类型对象为数据,c#,.net,types,C#,.net,Types,我需要使用DataObject实例将类型作为数据传递。我尝试了以下代码,但结果为空 DataObject data = new DataObject(typeof(String)); Type result = (Type)data.GetData(typeof(Type)); //expected result to be typeof(String) 我试图做如下的事情,但我使用的是类型对象,而不是字符串对象 DataObject data = new DataObject("abc")

我需要使用DataObject实例将类型作为数据传递。我尝试了以下代码,但结果为空

DataObject data = new DataObject(typeof(String));
Type result = (Type)data.GetData(typeof(Type));  //expected result to be typeof(String)
我试图做如下的事情,但我使用的是类型对象,而不是字符串对象

DataObject data = new DataObject("abc");
String result = (String)data.GetData(typeof(String));  //the result is "abc"
知道我为什么不能使用DataObject传递类型对象吗

---编辑1---


实际上,我正在使用来找出为什么
DragEventArgs.Data.GetData
方法返回
null
DragEventArgs.Data
是一个
IDataObject
,我使用
DataObject
来简化我的测试代码。

我想您正在寻找:


我认为您正在寻找:


我找到了一个办法让它工作。它也适用于
DragEventArgs.Data

DataObject data = new DataObject(typeof(String));
Type result = (Type)data.GetData(typeof(Type).GetType());
似乎
typeof()
返回类型为
RuntimeType
的对象,而不是
type
。获取
RuntimeType
的唯一方法是调用
typeof(任意类).GetType()
。我使用下面的代码示例来解决这个问题

string str1 = new Object().GetType().ToString();  //System.Object
string str2 = typeof(Object).ToString();  //System.Object
string str3 = typeof(Object).GetType().ToString();  //System.RuntimeType
string str4 = typeof(Type).ToString();  //System.Type
string str5 = typeof(Type).GetType().ToString();  //System.RuntimeType

我找到了一个办法让它工作。它也适用于
DragEventArgs.Data

DataObject data = new DataObject(typeof(String));
Type result = (Type)data.GetData(typeof(Type).GetType());
似乎
typeof()
返回类型为
RuntimeType
的对象,而不是
type
。获取
RuntimeType
的唯一方法是调用
typeof(任意类).GetType()
。我使用下面的代码示例来解决这个问题

string str1 = new Object().GetType().ToString();  //System.Object
string str2 = typeof(Object).ToString();  //System.Object
string str3 = typeof(Object).GetType().ToString();  //System.RuntimeType
string str4 = typeof(Type).ToString();  //System.Type
string str5 = typeof(Type).GetType().ToString();  //System.RuntimeType

我对你的代码做了一些测试,它按照我的预期工作,但这不是问题所在。看我的第一次编辑。那是完全不同的事情。你应该首先提到这一点。我对你的代码做了一些测试,它按照我的预期工作,但这不是问题所在。看我的第一次编辑。那是完全不同的事情。你应该首先提到这一点。我不确定这个测试是否有效。仅仅因为DragEventArgs.Data实现了IDataObj,而DataObject也实现了IDataObj,你不能暗示它们的行为完全相同。你试过了吗?你可能是对的,解决我的DataObject问题可能无法解决使用DragEventArgs时的问题。然而,我注意到两者都遇到了相同的问题,并认为如果我用DataObject找到解决方案,我可以解决我的DragEventArgs问题。我应该用显式问题问另一个问题吗?无论如何,我不明白为什么代码在任何情况下都不起作用。嗯,你的编辑使这个问题成为一个x-y问题…GetDataPresent返回一个bool。无论如何,在第一个例子中,它返回false,我希望在两个例子中都是true。我不确定这个测试是否有效。仅仅因为DragEventArgs.Data实现了IDataObj,而DataObject也实现了IDataObj,你不能暗示它们的行为完全相同。你试过了吗?你可能是对的,解决我的DataObject问题可能无法解决使用DragEventArgs时的问题。然而,我注意到两者都遇到了相同的问题,并认为如果我用DataObject找到解决方案,我可以解决我的DragEventArgs问题。我应该用显式问题问另一个问题吗?无论如何,我不明白为什么代码在任何情况下都不起作用。嗯,你的编辑使这个问题成为一个x-y问题…GetDataPresent返回一个bool。无论如何,在第一个示例中,它返回false,我希望在两个示例中都返回true。