本文整理汇总了C#中System.Reflection.ParameterInfo.IsRefCursor方法的典型用法代码示例。如果您正苦于以下问题:C# ParameterInfo.IsRefCursor方法的具体用法?C# ParameterInfo.IsRefCursor怎么用?C# ParameterInfo.IsRefCursor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Reflection.ParameterInfo
的用法示例。
在下文中一共展示了ParameterInfo.IsRefCursor方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddParameter
void AddParameter(ParameterInfo pi)
{
Type pType = pi.ParameterType;
if (pType.IsByRef)
pType = pType.GetElementType();
if (TypeHelper.IsScalar(pType)
#if FW4
|| pi.IsRefCursor()
#endif
)
_paramList.Add(pi);
else if (pType == typeof(DbManager) || pType.IsSubclassOf(typeof(DbManager)))
_createManager = false;
else
_refParamList.Add(pi);
}
示例2: StoreParameterValue
void StoreParameterValue(LocalBuilder param, ParameterInfo pi, Type type)
{
EmitHelper emit = Context.MethodBuilder.Emitter;
Label labelNull = emit.DefineLabel();
Label labelEndIf = emit.DefineLabel();
object[] attrs = pi.GetCustomAttributes(typeof(ParamNullValueAttribute), true);
object nullValue = attrs.Length == 0 ? null : ((ParamNullValueAttribute)attrs[0]).Value;
if (nullValue != null)
{
emit
.ldarg_0
.ldloc(_locManager)
.ldloc(param)
.callvirt(typeof(IDataParameter).GetProperty("Value").GetGetMethod())
.ldloc(param)
.callvirt(_baseType, "IsNull", _bindingFlags, typeof(DbManager), typeof(object), typeof(object))
.brtrue(labelNull)
;
}
if (type.IsEnum)
{
emit
.ldloc(_locManager)
.callvirt(typeof(DbManager).GetProperty("MappingSchema").GetGetMethod())
.ldloc(param)
.callvirt(typeof(IDataParameter).GetProperty("Value").GetGetMethod())
.LoadType(type)
.callvirt(typeof(MappingSchema), "MapValueToEnum", typeof(object), typeof(Type))
.CastFromObject(type)
;
}
#if FW4
else if (pi.IsRefCursor())
{
// Make sure the parameter is a List
if (!type.GetInterfaces().Contains(typeof(IList)))
{
throw new Exception("The argument '" + pi.Name + "' must be of type 'IList'");
}
//Get the generic type of the list
Type genericType = type.GetGenericArguments().First();
// Get the data reader to the ref cursor
var dataReader = emit.DeclareLocal(typeof(IDataReader));
emit
.ldloc(_locManager)
.callvirt(typeof(DbManager).GetProperty("DataProvider").GetGetMethod())
.ldloc(param)
.callvirt(typeof(IDataParameter).GetProperty("Value").GetGetMethod())
.callvirt(typeof(DataProviderBase), "GetRefCursorDataReader", typeof(object))
.CastFromObject(typeof(IDataReader))
.stloc(dataReader)
;
// Create the generic methos info to invoke
var mapDataReaderToListMethodInfo = typeof (MappingSchema).GetMethod("MapDataReaderToList",
new[]
{
typeof (IDataReader),
typeof (object[])
})
.MakeGenericMethod(genericType);
// Run MapDataReaderToList
emit
.ldloc(_locManager)
.callvirt(typeof(DbManager).GetProperty("MappingSchema").GetGetMethod())
.ldloc(dataReader)
.ldnull
.callvirt(mapDataReaderToListMethodInfo)
;
}
#endif
else
{
emit
.ldarg_0
.ldloc(_locManager)
.ldloc(param)
.callvirt(typeof(IDataParameter).GetProperty("Value").GetGetMethod())
;
MethodInfo converter = GetConverterMethod(type);
if (converter == null)
{
emit
.LoadType(type)
.ldloc(param)
.callvirt(_baseType, "ConvertChangeType", _bindingFlags, typeof(DbManager), typeof(object), typeof(Type), typeof(object))
.unboxIfValueType(type)
;
}
else
{
emit
//.........这里部分代码省略.........