internal XmlFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract) { if (DataContractSerializer.Option == SerializationOption.ReflectionOnly) { return CreateReflectionXmlFormatCollectionWriterDelegate(); } else { _ilg = new CodeGenerator(); bool memberAccessFlag = collectionContract.RequiresMemberAccessForWrite(null); try { _ilg.BeginMethod("Write" + collectionContract.StableName.Name + "ToXml", Globals.TypeOfXmlFormatCollectionWriterDelegate, memberAccessFlag); } catch (SecurityException securityException) { if (memberAccessFlag) { collectionContract.RequiresMemberAccessForWrite(securityException); } else { throw; } } InitArgs(collectionContract.UnderlyingType); WriteCollection(collectionContract); return (XmlFormatCollectionWriterDelegate)_ilg.EndMethod(); } }
internal JsonFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract) { _ilg = new CodeGenerator(); bool memberAccessFlag = collectionContract.RequiresMemberAccessForWrite(null); try { BeginMethod(_ilg, "Write" + DataContract.SanitizeTypeName(collectionContract.XmlName.Name) + "ToJson", typeof(JsonFormatCollectionWriterDelegate), memberAccessFlag); } catch (SecurityException securityException) { if (memberAccessFlag) { collectionContract.RequiresMemberAccessForWrite(securityException); } else { throw; } } InitArgs(collectionContract.UnderlyingType); if (collectionContract.IsReadOnlyContract) { ThrowIfCannotSerializeReadOnlyTypes(collectionContract); } WriteCollection(collectionContract); return((JsonFormatCollectionWriterDelegate)_ilg.EndMethod()); }
internal JsonFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract) { ilg = new CodeGenerator(); bool memberAccessFlag = collectionContract.RequiresMemberAccessForWrite(null); try { BeginMethod(ilg, "Write" + collectionContract.StableName.Name + "ToJson", typeof(JsonFormatCollectionWriterDelegate), memberAccessFlag); } catch (SecurityException securityException) { if (memberAccessFlag && securityException.PermissionType.Equals(typeof(ReflectionPermission))) { collectionContract.RequiresMemberAccessForWrite(securityException); } else { throw; } } InitArgs(collectionContract.UnderlyingType); DemandMemberAccessPermission(memberAccessFlag); if (collectionContract.IsReadOnlyContract) { ThrowIfCannotSerializeReadOnlyTypes(collectionContract); } WriteCollection(collectionContract); return((JsonFormatCollectionWriterDelegate)ilg.EndMethod()); }
internal XmlFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract) { if (DataContractSerializer.Option == SerializationOption.ReflectionOnly) { return(new ReflectionXmlFormatWriter().ReflectionWriteCollection); } #if uapaot else if (DataContractSerializer.Option == SerializationOption.ReflectionAsBackup) { return(new ReflectionXmlFormatWriter().ReflectionWriteCollection); } #endif else { #if USE_REFEMIT || uapaot throw new InvalidOperationException("Cannot generate class writer"); #else _ilg = new CodeGenerator(); bool memberAccessFlag = collectionContract.RequiresMemberAccessForWrite(null); try { _ilg.BeginMethod("Write" + collectionContract.StableName.Name + "ToXml", Globals.TypeOfXmlFormatCollectionWriterDelegate, memberAccessFlag); } catch (SecurityException securityException) { if (memberAccessFlag) { collectionContract.RequiresMemberAccessForWrite(securityException); } else { throw; } } InitArgs(collectionContract.UnderlyingType); WriteCollection(collectionContract); return((XmlFormatCollectionWriterDelegate)_ilg.EndMethod()); #endif } }
internal JsonFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract) { this.ilg = new CodeGenerator(); bool allowPrivateMemberAccess = collectionContract.RequiresMemberAccessForWrite(null); try { this.BeginMethod(this.ilg, "Write" + collectionContract.StableName.Name + "ToJson", typeof(JsonFormatCollectionWriterDelegate), allowPrivateMemberAccess); } catch (SecurityException exception) { if (!allowPrivateMemberAccess || !exception.PermissionType.Equals(typeof(ReflectionPermission))) { throw; } collectionContract.RequiresMemberAccessForWrite(exception); } this.InitArgs(collectionContract.UnderlyingType); this.DemandMemberAccessPermission(allowPrivateMemberAccess); this.WriteCollection(collectionContract); return((JsonFormatCollectionWriterDelegate)this.ilg.EndMethod()); }
internal XmlFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract) { ilg = new CodeGenerator(); bool memberAccessFlag = collectionContract.RequiresMemberAccessForWrite(null); ilg.BeginMethod("Write" + collectionContract.StableName.Name + "ToXml", Globals.TypeOfXmlFormatCollectionWriterDelegate, memberAccessFlag); InitArgs(collectionContract.UnderlyingType); if (collectionContract.IsReadOnlyContract) { ThrowIfCannotSerializeReadOnlyTypes(collectionContract); } WriteCollection(collectionContract); return((XmlFormatCollectionWriterDelegate)ilg.EndMethod()); }
internal JsonFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract) { _ilg = new CodeGenerator(); bool memberAccessFlag = collectionContract.RequiresMemberAccessForWrite(null, JsonGlobals.JsonSerializationPatterns); try { BeginMethod(_ilg, "Write" + DataContract.SanitizeTypeName(collectionContract.StableName.Name) + "ToJson", typeof(JsonFormatCollectionWriterDelegate), memberAccessFlag); } catch (SecurityException securityException) { if (memberAccessFlag) { collectionContract.RequiresMemberAccessForWrite(securityException, JsonGlobals.JsonSerializationPatterns); } else { throw; } } InitArgs(collectionContract.UnderlyingType); WriteCollection(collectionContract); return((JsonFormatCollectionWriterDelegate)_ilg.EndMethod()); }
internal JsonFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract) { ilg = new CodeGenerator(); bool memberAccessFlag = collectionContract.RequiresMemberAccessForWrite(null); try { BeginMethod(ilg, "Write" + collectionContract.StableName.Name + "ToJson", typeof(JsonFormatCollectionWriterDelegate), memberAccessFlag); } catch (SecurityException securityException) { if (memberAccessFlag && securityException.PermissionType.Equals(typeof(ReflectionPermission))) { collectionContract.RequiresMemberAccessForWrite(securityException); } else { throw; } } InitArgs(collectionContract.UnderlyingType); DemandMemberAccessPermission(memberAccessFlag); if (collectionContract.IsReadOnlyContract) { ThrowIfCannotSerializeReadOnlyTypes(collectionContract); } WriteCollection(collectionContract); return (JsonFormatCollectionWriterDelegate)ilg.EndMethod(); }
internal JsonFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract) { _ilg = new CodeGenerator(); bool memberAccessFlag = collectionContract.RequiresMemberAccessForWrite(null, JsonGlobals.JsonSerializationPatterns); try { BeginMethod(_ilg, "Write" + DataContract.SanitizeTypeName(collectionContract.StableName.Name) + "ToJson", typeof(JsonFormatCollectionWriterDelegate), memberAccessFlag); } catch (SecurityException securityException) { if (memberAccessFlag) { collectionContract.RequiresMemberAccessForWrite(securityException, JsonGlobals.JsonSerializationPatterns); } else { throw; } } InitArgs(collectionContract.UnderlyingType); WriteCollection(collectionContract); return (JsonFormatCollectionWriterDelegate)_ilg.EndMethod(); }
internal XmlFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract) { if (_useReflection) { return new ReflectionXmlFormatWriter().ReflectionWriteCollection; } else { _ilg = new CodeGenerator(); bool memberAccessFlag = collectionContract.RequiresMemberAccessForWrite(null); try { _ilg.BeginMethod("Write" + collectionContract.StableName.Name + "ToXml", Globals.TypeOfXmlFormatCollectionWriterDelegate, memberAccessFlag); } catch (SecurityException securityException) { if (memberAccessFlag) { collectionContract.RequiresMemberAccessForWrite(securityException); } else { throw; } } InitArgs(collectionContract.UnderlyingType); WriteCollection(collectionContract); return (XmlFormatCollectionWriterDelegate)_ilg.EndMethod(); } }
internal XmlFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract) { this.ilg = new CodeGenerator(); bool allowPrivateMemberAccess = collectionContract.RequiresMemberAccessForWrite(null); try { this.ilg.BeginMethod("Write" + collectionContract.StableName.Name + "ToXml", Globals.TypeOfXmlFormatCollectionWriterDelegate, allowPrivateMemberAccess); } catch (SecurityException exception) { if (!allowPrivateMemberAccess || !exception.PermissionType.Equals(typeof(ReflectionPermission))) { throw; } collectionContract.RequiresMemberAccessForWrite(exception); } this.InitArgs(collectionContract.UnderlyingType); this.DemandMemberAccessPermission(allowPrivateMemberAccess); this.WriteCollection(collectionContract); return (XmlFormatCollectionWriterDelegate) this.ilg.EndMethod(); }
internal XmlFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract) { if (DataContractSerializer.Option == SerializationOption.ReflectionOnly) { return new ReflectionXmlFormatWriter().ReflectionWriteCollection; } #if NET_NATIVE else if (DataContractSerializer.Option == SerializationOption.ReflectionAsBackup) { return new ReflectionXmlFormatWriter().ReflectionWriteCollection; } #endif else { #if USE_REFEMIT || NET_NATIVE throw new InvalidOperationException("Cannot generate class writer"); #else _ilg = new CodeGenerator(); bool memberAccessFlag = collectionContract.RequiresMemberAccessForWrite(null); try { _ilg.BeginMethod("Write" + collectionContract.StableName.Name + "ToXml", Globals.TypeOfXmlFormatCollectionWriterDelegate, memberAccessFlag); } catch (SecurityException securityException) { if (memberAccessFlag) { collectionContract.RequiresMemberAccessForWrite(securityException); } else { throw; } } InitArgs(collectionContract.UnderlyingType); WriteCollection(collectionContract); return (XmlFormatCollectionWriterDelegate)_ilg.EndMethod(); #endif } }