ReadableExpressions
ReadableExpressions copied to clipboard
Exception while loading System.Func'3
First expression i try to debug i get this exception:
System.TypeLoadException: The generic type 'System.Func`3' was used with an invalid instantiation in assembly 'System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.
at System.RuntimeTypeHandle.Instantiate(Type[] inst) at System.RuntimeType.MakeGenericType(Type[] instantiation)
at System.Linq.Expressions.Compiler.DelegateHelpers.GetFuncType(Type[] types)
at System.Linq.Expressions.Expression.GetFuncType(Type[] typeArgs)
at AgileObjects.ReadableExpressions.Extensions.PublicExpressionExtensions.Update(LambdaExpression lambda, Expression body, IEnumerable`1 parameters)
at AgileObjects.ReadableExpressions.ExpressionAnalysis.VisitAndConvert(LambdaExpression lambda)
at AgileObjects.ReadableExpressions.ExpressionAnalysis.VisitAndConvert(Expression expression)
at AgileObjects.ReadableExpressions.ExpressionAnalysis.Analyse(Expression expression)
at AgileObjects.ReadableExpressions.ExpressionAnalysis.For(Expression expression, TranslationSettings settings)
at AgileObjects.ReadableExpressions.Translations.ExpressionTranslation..ctor(Expression expression, TranslationSettings settings)
at AgileObjects.ReadableExpressions.ExpressionExtensions.ToReadableString(Expression expression, Func`2 configuration)
at AgileObjects.ReadableExpressions.Visualizers.ObjectSource.ExpressionVisualizerObjectSource.GetTranslationFor(Object target)
at AgileObjects.ReadableExpressions.Visualizers.ObjectSource.ExpressionVisualizerObjectSource.GetData(Object target, Stream outgoingData, Action`2 serializer)
The expression itself was: (it's a generated expression to parse a json with a known structure into an array/span)
.Lambda #Lambda1<MyClass+Updater>(
System.Text.Json.JsonElement $root,
System.Span`1[System.Double] $values) {
.Block(
System.Text.Json.JsonElement $_Test,
System.Text.Json.JsonElement $_Test_Min,
System.Double $_Test_Min_value,
System.Text.Json.JsonElement $_Test_Max,
System.Double $_Test_Max_value,
System.Text.Json.JsonElement $_Test_Tot,
System.Double $_Test_Tot_value,
System.Text.Json.JsonElement $_Test_Min,
System.Double $_Test_Min_value,
System.Text.Json.JsonElement $_Test_Max,
System.Double $_Test_Max_value,
System.Text.Json.JsonElement $_Test_Tot,
System.Double $_Test_Tot_value,
System.Text.Json.JsonElement $_Duration,
System.Double $_Duration_value,
System.Text.Json.JsonElement $_Duration,
System.Double $_Duration_value,
System.Int32 $counter) {
.If (
.Call $root.TryGetProperty(
"Test",
$_Test)
) {
.Block() {
.If (
.Call $_Test.TryGetProperty(
"Min",
$_Test_Min)
) {
.If (
.Call $_Test_Min.TryGetDouble($_Test_Min_value)
) {
.Block() {
$counter = .Increment($counter);
.Call MyClass.SetSpanValue(
$values,
0,
$_Test_Min_value)
}
} .Else {
.Default(System.Void)
}
} .Else {
.Default(System.Void)
};
.If (
.Call $_Test.TryGetProperty(
"Max",
$_Test_Max)
) {
.If (
.Call $_Test_Max.TryGetDouble($_Test_Max_value)
) {
.Block() {
$counter = .Increment($counter);
.Call MyClass.SetSpanValue(
$values,
1,
$_Test_Max_value)
}
} .Else {
.Default(System.Void)
}
} .Else {
.Default(System.Void)
};
.If (
.Call $_Test.TryGetProperty(
"Tot",
$_Test_Tot)
) {
.If (
.Call $_Test_Tot.TryGetDouble($_Test_Tot_value)
) {
.Block() {
$counter = .Increment($counter);
.Call MyClass.SetSpanValue(
$values,
2,
$_Test_Tot_value)
}
} .Else {
.Default(System.Void)
}
} .Else {
.Default(System.Void)
};
.If (
.Call $_Test.TryGetProperty(
"Min",
$_Test_Min)
) {
.If (
.Call $_Test_Min.TryGetDouble($_Test_Min_value)
) {
.Block() {
$counter = .Increment($counter);
.Call MyClass.SetSpanValue(
$values,
4,
$_Test_Min_value)
}
} .Else {
.Default(System.Void)
}
} .Else {
.Default(System.Void)
};
.If (
.Call $_Test.TryGetProperty(
"Max",
$_Test_Max)
) {
.If (
.Call $_Test_Max.TryGetDouble($_Test_Max_value)
) {
.Block() {
$counter = .Increment($counter);
.Call MyClass.SetSpanValue(
$values,
5,
$_Test_Max_value)
}
} .Else {
.Default(System.Void)
}
} .Else {
.Default(System.Void)
};
.If (
.Call $_Test.TryGetProperty(
"Tot",
$_Test_Tot)
) {
.If (
.Call $_Test_Tot.TryGetDouble($_Test_Tot_value)
) {
.Block() {
$counter = .Increment($counter);
.Call MyClass.SetSpanValue(
$values,
6,
$_Test_Tot_value)
}
} .Else {
.Default(System.Void)
}
} .Else {
.Default(System.Void)
}
}
} .Else {
.Default(System.Void)
};
.If (
.Call $root.TryGetProperty(
"Duration",
$_Duration)
) {
.If (
.Call $_Duration.TryGetDouble($_Duration_value)
) {
.Block() {
$counter = .Increment($counter);
.Call MyClass.SetSpanValue(
$values,
3,
$_Duration_value)
}
} .Else {
.Default(System.Void)
}
} .Else {
.Default(System.Void)
};
.If (
.Call $root.TryGetProperty(
"Duration",
$_Duration)
) {
.If (
.Call $_Duration.TryGetDouble($_Duration_value)
) {
.Block() {
$counter = .Increment($counter);
.Call MyClass.SetSpanValue(
$values,
7,
$_Duration_value)
}
} .Else {
.Default(System.Void)
}
} .Else {
.Default(System.Void)
};
$counter
}
}