当前位置: 首页>>代码示例>>C#>>正文


C# Compiler.EmitBasicWrite方法代码示例

本文整理汇总了C#中Compiler.EmitBasicWrite方法的典型用法代码示例。如果您正苦于以下问题:C# Compiler.EmitBasicWrite方法的具体用法?C# Compiler.EmitBasicWrite怎么用?C# Compiler.EmitBasicWrite使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Compiler的用法示例。


在下文中一共展示了Compiler.EmitBasicWrite方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1:

 void IProtoSerializer.EmitWrite(Compiler.CompilerContext ctx, Compiler.Local valueFrom)
 {
     Type type = ExpectedType;
     if (type.IsValueType)
     {
         ctx.EmitCall(GetCustomToString(type));
     }
     else {
         ctx.EmitCall(typeof(object).GetMethod("ToString"));
     }
     ctx.EmitBasicWrite("WriteString", valueFrom);
 }
开发者ID:Ribosome2,项目名称:protobuf-net-1,代码行数:12,代码来源:ParseableSerializer.cs

示例2: GetTypeCode

 void IProtoSerializer.EmitWrite(Compiler.CompilerContext ctx, Compiler.Local valueFrom)
 {
     TypeCode typeCode = GetTypeCode();
     if (map == null)
     {
         ctx.LoadValue(valueFrom);
         ctx.ConvertToInt32(typeCode);
         ctx.EmitBasicWrite("WriteInt32", null);
     }
     else
     {
         using (Compiler.Local loc = ctx.GetLocalWithValue(ExpectedType, valueFrom))
         {
             Compiler.CodeLabel @continue = ctx.DefineLabel();
             for (int i = 0; i < map.Length; i++)
             {
                 Compiler.CodeLabel tryNextValue = ctx.DefineLabel(), processThisValue = ctx.DefineLabel();
                 ctx.LoadValue(loc);
                 WriteEnumValue(ctx, typeCode, map[i].Value);
                 ctx.BranchIfEqual(processThisValue, true);
                 ctx.Branch(tryNextValue, true);
                 ctx.MarkLabel(processThisValue);
                 ctx.LoadValue(map[i].WireValue);
                 ctx.EmitBasicWrite("WriteInt32", null);
                 ctx.Branch(@continue, false);
                 ctx.MarkLabel(tryNextValue);
             }
             ctx.LoadReaderWriter();
             ctx.LoadValue(loc);
             ctx.CastToObject(ExpectedType);
             ctx.EmitCall(typeof(ProtoWriter).GetMethod("ThrowEnumException"));
             ctx.MarkLabel(@continue);
         }
     }
     
 }
开发者ID:AugustoAngeletti,项目名称:blockspaces,代码行数:36,代码来源:EnumSerializer.cs

示例3:

 void IProtoSerializer.EmitWrite(Compiler.CompilerContext ctx, Compiler.Local valueFrom)
 {
     ctx.EmitBasicWrite("WriteBytes", valueFrom);
 }
开发者ID:Ribosome2,项目名称:MySocketProject,代码行数:4,代码来源:BlobSerializer.cs

示例4: using

 void IProtoSerializer.EmitWrite(Compiler.CompilerContext ctx, Compiler.Local valueFrom)
 {
     Type type = ExpectedType;
     if (Helpers.IsValueType(type))
     {   // note that for structs, we've already asserted that a custom ToString
         // exists; no need to handle the box/callvirt scenario
         
         // force it to a variable if needed, so we can take the address
         using (Compiler.Local loc = ctx.GetLocalWithValue(type, valueFrom))
         {
             ctx.LoadAddress(loc, type);
             ctx.EmitCall(GetCustomToString(type));
         }
     }
     else {
         ctx.EmitCall(ctx.MapType(typeof(object)).GetMethod("ToString"));
     }
     ctx.EmitBasicWrite("WriteString", valueFrom);
 }
开发者ID:GeorchW,项目名称:protobuf-net,代码行数:19,代码来源:ParseableSerializer.cs


注:本文中的Compiler.EmitBasicWrite方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。