.NET 8升级后ParseLambda枚举类型找不到异常解决
.NET 8升级后DynamicExpressionParser无法识别自定义枚举的解决办法
问题情况
项目从.NET 6升级到.NET 8后,调用DynamicExpressionParser.ParseLambda方法时出现异常。
调用代码如下:
var e = DynamicExpressionParser.ParseLambda(new[] { q, t, s, d, st }, null, exp);
其中exp字符串包含这段Linq逻辑:
someCollection.Count(p => p.SomeProperty == MyNamespace.MyEnum.Value1)
抛出的异常
Type 'MyNamespace.MyEnum' not found (at index 504)
原因推测
升级过程中System.Linq.Dynamic.Core库版本从适配.NET 6的1.4.5.0更新到了适配.NET 8的1.6.0.1,应该是库的类型解析规则变更或新增了安全限制,导致自定义枚举无法被自动识别。
解决方法
给对应的枚举类型添加[DynamicLinqType]属性即可:
using System.Linq.Dynamic.Core; namespace MyNamespace { [DynamicLinqType] public enum MyEnum { Value1, // 其他枚举成员 } }
内容的提问来源于stack exchange,提问作者mkedwards
相关产品推荐
相关产品推荐

