【发布时间】:2015-09-17 16:44:39
【问题描述】:
我正在尝试使用
获取动态 linq 列的类型var args = ((dynamic)linqColumn).PropertyType.GenericTypeArguments;
然后比较可能的类型名称:
if (args.Length > 0 && args[0].Name == "DateTime")
ProcessDateTimeType();
else if (args.Length > 0 && args[0].Name == "Double")
ProcessDoubleType();
这适用于带有 .NET 4.0 的 Windows Vista,但不适用于带有 .NET 4.0 的 Windows Server 2003。抛出错误'System.Type' does not contain a definition for 'GenericTypeArguments'。
我只需要可空类型的 GenericTypeArguments。
有什么想法吗?
备注
-
linqColumn是通过var linqColumn = linqTableType.GetProperty("COLNAME");获得的 -
linqTableType是通过'Type linqTableType = Type.GetType("MYNAMESPACE." + "TABLENAME");获得的 - 代码在里面执行 网络服务
【问题讨论】:
-
msdn.microsoft.com/en-us/library/… - 在 Windows Server 2003 SP2 上受支持 - 检查您是否安装了 SP2
-
GenericTypeArguments直到 .Net 4.5 才添加到System.Type。 msdn.microsoft.com/en-us/library/… -
实际上是的 Preston 是对的,我正在查看 GetGenericArguments - 你确定你是在 Vista 上为 .NET 4.0 构建吗?
-
该项目使用 VWD 2010 Express,目标框架是 .NET Framework 4。但是我刚刚注意到 Microsoft .NET Framework 4.5.1 安装在 Vista 上,但没有安装在 Windows Server 2003 上。这可能是错误的根源,尽管该项目仅针对 .NET 4?
标签: c# linq dynamic reflection