System.Runtime.Serialization.XmlFormatWriterGenerator.XmlFormatWriterGenerator.CriticalHelper.GenerateCollectionWriter C# (CSharp) Method

GenerateCollectionWriter() private method

private GenerateCollectionWriter ( CollectionDataContract collectionContract ) : XmlFormatCollectionWriterDelegate
collectionContract CollectionDataContract
return XmlFormatCollectionWriterDelegate
            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
                }
            }