il.Emit(OpCodes.Dup);// stack is now [parameters] [parameters] [parameter] [parameter]
}
il.Emit(OpCodes.Ldstr,"@"+prop.Name);// stack is now [parameters] [parameters] [parameter] [parameter] [name]
il.EmitCall(OpCodes.Callvirt,typeof(IDataParameter).GetProperty("ParameterName").GetSetMethod(),null);// stack is now [parameters] [parameters] [parameter]
il.Emit(OpCodes.Dup);// stack is now [parameters] [parameters] [parameter] [parameter]
{
EmitInt32(il,(int)dbType);// stack is now [parameters] [parameters] [parameter] [parameter] [db-type]
varcmd=cnn.CreateCommand();
cmd.Transaction=tranaction;
il.EmitCall(OpCodes.Callvirt,typeof(IDataParameter).GetProperty("DbType").GetSetMethod(),null);// stack is now [parameters] [parameters] [parameter]
cmd.CommandText=sql;
if(paramInfo!=null)
il.Emit(OpCodes.Dup);// stack is now [parameters] [parameters] [parameter] [parameter]
EmitInt32(il,(int)ParameterDirection.Input);// stack is now [parameters] [parameters] [parameter] [parameter] [dir]
il.EmitCall(OpCodes.Callvirt,typeof(IDataParameter).GetProperty("Direction").GetSetMethod(),null);// stack is now [parameters] [parameters] [parameter]
il.Emit(OpCodes.Dup);// stack is now [parameters] [parameters] [parameter] [parameter]
il.Emit(OpCodes.Ldloc_0);// stack is now [parameters] [parameters] [parameter] [parameter] [typed-param]
il.Emit(OpCodes.Callvirt,prop.GetGetMethod());// stack is [parameters] [parameters] [parameter] [parameter] [typed-value]
boolcheckForNull=true;
if(prop.PropertyType.IsValueType)
{
il.Emit(OpCodes.Box,prop.PropertyType);// stack is [parameters] [parameters] [parameter] [parameter] [boxed-value]