diff --git a/Dapper/SqlMapper.cs b/Dapper/SqlMapper.cs index 3418c8e71e3112896ffb80478e336a7978b1cc34..92c265bb116974451ab33a992a4becea01ade31d 100644 --- a/Dapper/SqlMapper.cs +++ b/Dapper/SqlMapper.cs @@ -1236,6 +1236,7 @@ internal int AddField(string name) if (fieldNameLookup.ContainsKey(name)) throw new InvalidOperationException("Field already exists: " + name); int oldLen = fieldNames.Length; Array.Resize(ref fieldNames, oldLen + 1); // yes, this is sub-optimal, but this is not the expected common case + fieldNames[oldLen] = name; fieldNameLookup[name] = oldLen; return oldLen; } @@ -1298,6 +1299,19 @@ public override System.Dynamic.DynamicMetaObject BindGetMember(System.Dynamic.Ge return callMethod; } + // Needed for Visual basic dynamic support + public override System.Dynamic.DynamicMetaObject BindInvokeMember(System.Dynamic.InvokeMemberBinder binder, System.Dynamic.DynamicMetaObject[] args) + { + var parameters = new System.Linq.Expressions.Expression[] + { + System.Linq.Expressions.Expression.Constant(binder.Name) + }; + + var callMethod = CallMethod(getValueMethod, parameters); + + return callMethod; + } + public override System.Dynamic.DynamicMetaObject BindSetMember(System.Dynamic.SetMemberBinder binder, System.Dynamic.DynamicMetaObject value) { var parameters = new System.Linq.Expressions.Expression[]