【发布时间】:2012-02-05 02:40:58
【问题描述】:
我正在使用 LINQ to Entities 在 VB.Net 中生成类型化结果集。我有一个通用的报告类如下:
Public Class Report
Public Property Name As String
Public Property SQL As String
Public Property Type As String
End Class
然后在调用范围内,我希望代码执行如下操作:
' create my data context
Dim context As New MyAppEntities
' get a report object out of a dropdown list
Dim rpt as Report = CType(aComboBox.SelectedItem, Report)
' create a result object based on the type stored in the object
Dim res As ObjectResult(Of rpt.Type) = context.ExecuteStoreQuery(Of rpt.Type)(rpt.SQL)
到目前为止,我发现 .Net 不允许我在运行时动态设置 (Of Type) 子句中的类型。
有人知道怎么做吗?
我尝试将 Report 类的 Type 属性更改为 Type 类型的对象,但这也不起作用。
顺便说一句,我知道有其他方法可以完成同样的事情,但我正在处理外部约束,这使得我现在必须处理这个问题。无论如何,直觉上这样的事情应该可以工作,我想弄清楚如何。
【问题讨论】:
-
您是否尝试动态指定泛型类型参数?我认为您需要为此使用反射。见stackoverflow.com/questions/196936/reflection-and-generic-types。