BamlLocalization.ResourceGenerator.GenerateResourceStream C# (CSharp) Метод

GenerateResourceStream() приватный статический Метод

private static GenerateResourceStream ( LocBamlOptions options, string resourceName, IResourceReader reader, IResourceWriter writer, BamlLocalization.TranslationDictionariesReader dictionaries ) : void
options LocBamlOptions
resourceName string
reader IResourceReader
writer IResourceWriter
dictionaries BamlLocalization.TranslationDictionariesReader
Результат void
        private static void GenerateResourceStream(
            LocBamlOptions options,                     // options from the command line
            string resourceName,                        // the name of the .resources file
            IResourceReader reader,                     // the reader for the .resources
            IResourceWriter writer,                     // the writer for the output .resources
            TranslationDictionariesReader dictionaries  // the translations
            )
        {
            options.WriteLine(StringLoader.Get("GenerateResource", resourceName));
            // enumerate through each resource and generate it
            foreach(DictionaryEntry entry in reader)
            {
                string name = entry.Key as string;
                object resourceValue = null;

                // See if it looks like a Baml resource
                if (BamlStream.IsResourceEntryBamlStream(name, entry.Value))
                {
            Stream targetStream = null;
                    options.Write("    ");
                    options.Write(StringLoader.Get("GenerateBaml", name));

                    // grab the localizations available for this Baml
                    string bamlName = BamlStream.CombineBamlStreamName(resourceName, name);
                    BamlLocalizationDictionary localizations = dictionaries[bamlName];
                    if (localizations != null)
                    {
                        targetStream = new MemoryStream();

                        // generate into a new Baml stream
                        GenerateBamlStream(
                            (Stream) entry.Value,
                            targetStream,
                            localizations,
                            options
                        );
                    }
                    options.WriteLine(StringLoader.Get("Done"));

            // sets the generated object to be the generated baml stream
            resourceValue = targetStream;
                }

            if (resourceValue == null)
                {
                    //
                    // The stream is not localized as Baml yet, so we will make a copy of this item into
                    // the localized resources
                    //

            // We will add the value as is if it is serializable. Otherwise, make a copy
            resourceValue = entry.Value;

                    object[] serializableAttributes = resourceValue.GetType().GetCustomAttributes(typeof(SerializableAttribute), true);
                    if (serializableAttributes.Length == 0)
                    {
                        // The item returned from resource reader is not serializable
                        // If it is Stream, we can wrap all the values in a MemoryStream and
                        // add to the resource. Otherwise, we had to skip this resource.
            Stream resourceStream = resourceValue as Stream;
                        if (resourceStream != null)
                        {
                Stream targetStream = new MemoryStream();
                            byte[] buffer = new byte[resourceStream.Length];
                            resourceStream.Read(buffer, 0, buffer.Length);
                            targetStream = new MemoryStream(buffer);
                resourceValue = targetStream;
                        }
                    }
                }

            if (resourceValue != null)
                {
            writer.AddResource(name, resourceValue);
                }
            }
        }