2012-02-16 49 views
0

短的问题:是否有访问.NET应用程序提供的数据类型为一组(并因此与LINQ查询他们)的方式。像这样...如何编程访问可用的数据类型在.NET应用程序

Dim myType = from l in myapplication.availabledatatypes where l.name="name of type I want" select l 

更详细的解释: 我试图从表中使用LINQ移动大量的旧记录到相同的“档案”表到SQL。作为这一过程的一部分,我需要从直播表中选择记录并将其转换成(相同)归档类型。我试图用可通过使用反射,以下这优良引导被用于所有不同的表/存档表对一个单一的方法干净地做到这一点 http://michaelmerrell.com/2010/08/converting-a-linq-object-to-a-similar-object/

我的转换方法将对象类型的输入,并且将其转换为类对象的输出,这是我然后计划投放到所要求的输出类型在调用转换方法的方法。我能够得到的datacontext具有相同的名字,因为我要转换为类型的属性,但我似乎无法以编程方式拉具有相同名称的类型。

Dim typeIamLookingFor as propertyInfo= from l in mydatacontext.getproperties where l.name.contains("archive") and l.name.contains(input.gettype.name) select l 

如何挑选,从我的命名空间中的类型,其名称的一等于该typeIamLookingFor的。显然.getType返回类型的PropertyInfo,但我真正想要的是一个名为类型= typeiamlookingfor.name

编辑 感谢您的建议。 Type.GetType让我更接近,但编译器现在说对象必须实现IConvertible。我要调查这个不同的错误并接受这个答案。

Dim output as object 
Dim typeName as string = "namespace." & inputObject.gettype.name & "_Archive" 
output = output = Convert.ChangeType(output, Type.GetType(typeName)) //generates error: Object Must Implement IConvertible 
+0

我不会试图找出所有可用的类型,这似乎是矫枉过正。相反,只是尝试实例的类型,如果你有它,它会工作,如果你没有,那么你会得到一个异常。 – Kiril 2012-02-16 16:57:04

回答

2

我认为你是过度复杂化你的解决方案。根据您的描述,您可能只需要Type.GetType()

Type typeIamLookingFor = Type.GetType("archive." + typeName) 

有没有更多它呢?

相关问题