public EmitLdtoken ( System target ) : void | ||
target | System | |
Résultat | void |
private static void EmitNilImplicationForPrimitive( TracingILGenerator il, SerializingMember member, LocalBuilder value, Label endOfDeserialization ) { var endIf = il.DefineLabel( "END_IF_NULL" ); EmitCompareNull( il, value, endIf ); switch ( member.Contract.NilImplication ) { case NilImplication.MemberDefault: { /* * if( value == null ) * { * // Skip current. * goto END_OF_DESERIALIZATION; * } */ il.EmitBr( endOfDeserialization ); break; } case NilImplication.Null: { // Throw exception for non-nullable value type. // Nop for nullables. if ( member.Member.GetMemberValueType().GetIsValueType() && Nullable.GetUnderlyingType( member.Member.GetMemberValueType() ) == null ) { /* * if( value == null ) * { * throw SerializationEceptions.NewValueTypeCannotBeNull( "...", typeof( MEMBER ), typeof( TYPE ) ); * } */ il.EmitLdstr( member.Contract.Name ); il.EmitLdtoken( member.Member.GetMemberValueType() ); il.EmitAnyCall( Metadata._Type.GetTypeFromHandle ); il.EmitLdtoken( member.Member.DeclaringType ); il.EmitAnyCall( Metadata._Type.GetTypeFromHandle ); il.EmitAnyCall( SerializationExceptions.NewValueTypeCannotBeNull3Method ); il.EmitThrow(); } break; } case NilImplication.Prohibit: { /* * if( value == null ) * { * throw SerializationEceptions.NewProhibitNullException( "..." ); * } */ il.EmitLdstr( member.Contract.Name ); il.EmitAnyCall( SerializationExceptions.NewNullIsProhibitedMethod ); il.EmitThrow(); break; } } il.MarkLabel( endIf ); }