diff --git a/AmalgamationTool/DynamORM.Amalgamation.cs b/AmalgamationTool/DynamORM.Amalgamation.cs index 76cfa0f..a1d15ad 100644 --- a/AmalgamationTool/DynamORM.Amalgamation.cs +++ b/AmalgamationTool/DynamORM.Amalgamation.cs @@ -10828,10 +10828,27 @@ namespace DynamORM { ParameterExpression param = Expression.Parameter(typeof(InvokeMemberBinder), "o"); + try + { + return Expression.Lambda>>( + Expression.TypeAs( + Expression.Field( + Expression.TypeAs(param, binderType), "typeArguments"), + typeof(IList)), param).Compile(); + } + catch + { + } + + PropertyInfo prop = binderType.GetProperty("TypeArguments"); + + if (!prop.CanRead) + return null; + return Expression.Lambda>>( Expression.TypeAs( - Expression.Field( - Expression.TypeAs(param, binderType), "typeArguments"), + Expression.Property( + Expression.TypeAs(param, binderType), prop.Name), typeof(IList)), param).Compile(); } } @@ -10888,6 +10905,14 @@ namespace DynamORM // If this was a success get and return it's value if (field != null) return field.GetValue(binder) as IList; + else + { + PropertyInfo prop = binder.GetType().GetProperty("TypeArguments"); + + // If we have a property, return it's value + if (prop != null) + return prop.GetValue(binder, null) as IList; + } } else {