本文整理汇总了C#中System.Reflection.Emit.ILGenerator.EmitStoreToRef方法的典型用法代码示例。如果您正苦于以下问题:C# ILGenerator.EmitStoreToRef方法的具体用法?C# ILGenerator.EmitStoreToRef怎么用?C# ILGenerator.EmitStoreToRef使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Reflection.Emit.ILGenerator
的用法示例。
在下文中一共展示了ILGenerator.EmitStoreToRef方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateMethod
public virtual void GenerateMethod(PropertyInfo pi, MethodInfo mi, ILGenerator gen)
{
// Set default values for out parameters
foreach (var par in mi.GetParameters().Where(p => p.IsOut))
{
var defaultAttr = par.GetCustomAttributes(typeof(SafeDefaultAttribute), true)
.Cast<SafeDefaultAttribute>().FirstOrDefault();
var type = par.ParameterType.GetElementType();
gen.EmitBestLdArg((ushort)(par.Position + 1));
if (defaultAttr!=null)
defaultAttr.PushValueAction(gen);
else
PushDefaultReturnValue(gen, type);
gen.EmitStoreToRef(type);
}
// Set default value for return types
if (mi.ReturnType!=typeof(void))
{
MemberInfo attrSource = mi;
if (pi!=null)
attrSource = pi;
var defaultAttr = attrSource.GetCustomAttributes(typeof(SafeDefaultAttribute), true)
.Cast<SafeDefaultAttribute>().FirstOrDefault();
if (defaultAttr!=null)
defaultAttr.PushValueAction(gen);
else
PushDefaultReturnValue(gen, mi.ReturnType);
}
gen.Emit(OpCodes.Ret);
}
示例2: GenerateOutConversion
public override void GenerateOutConversion(object token, Action load, IProxyModuleCoderAccess proxyModule, ILGenerator gen)
{
var local = (LocalBuilder)token;
load();
gen.Emit(OpCodes.Ldloc, local);
_valueBinding.GenerateConversion(proxyModule, gen);
gen.EmitStoreToRef(_fromType);
}