Ejemplo n.º 1
0
#pragma warning restore CS8618 // Non-nullable field is uninitialized.

        public XElement ExportXml()
        {
            return(new XElement("Type",
                                new XAttribute("Name", Type.Name),

                                !Options.IsSetAssert(DescriptionOptions.Description, Type) ||
                                Description == null ||
                                (Assembly.IsDefault && Description == DescriptionManager.DefaultTypeDescription(Type)) ? null :
                                new XAttribute("Description", Description),

                                !Options.IsSetAssert(DescriptionOptions.PluralDescription, Type) ||
                                PluralDescription == null ||
                                (PluralDescription == NaturalLanguageTools.Pluralize(Description !, Assembly.Culture)) ? null :
                                new XAttribute("PluralDescription", PluralDescription),

                                !Options.IsSetAssert(DescriptionOptions.Gender, Type) ||
                                Gender == null ||
                                (Gender == NaturalLanguageTools.GetGender(Description !, Assembly.Culture)) ? null :
                                new XAttribute("Gender", Gender.ToString()),

                                !Options.IsSetAssert(DescriptionOptions.Members, Type) ? null :
                                (from m in GetMembers(Type)
                                 where DescriptionManager.OnShouldLocalizeMember(m)
                                 orderby m.Name
                                 let value = Members !.TryGetC(m.Name)
                                             where value != null && !(Assembly.IsDefault && (DescriptionManager.DefaultMemberDescription(m) == value))
                                             select new XElement("Member", new XAttribute("Name", m.Name), new XAttribute("Description", value)))
                                ));
        }
Ejemplo n.º 2
0
        internal static LocalizedType ImportXml(Type type, DescriptionOptions opts, LocalizedAssembly assembly, XElement x)
        {
            string?description = !opts.IsSetAssert(DescriptionOptions.Description, type) ? null :
                                 (x == null || x.Attribute("Name").Value != type.Name ? null : x.Attribute("Description")?.Value) ??
                                 (!assembly.IsDefault ? null : DescriptionManager.DefaultTypeDescription(type));

            var xMembers = x?.Elements("Member")
                           .Select(m => KeyValuePair.Create(m.Attribute("Name").Value, m.Attribute("Description").Value))
                           .Distinct(m => m.Key)
                           .ToDictionary();

            LocalizedType result = new LocalizedType
            {
                Type     = type,
                Options  = opts,
                Assembly = assembly,

                Description       = description,
                PluralDescription = !opts.IsSetAssert(DescriptionOptions.PluralDescription, type) ? null :
                                    ((x == null || x.Attribute("Name").Value != type.Name ? null : x.Attribute("PluralDescription")?.Value) ??
                                     (!assembly.IsDefault ? null : type.GetCustomAttribute <PluralDescriptionAttribute>()?.PluralDescription) ??
                                     (description == null ? null : NaturalLanguageTools.Pluralize(description, assembly.Culture))),

                Gender = !opts.IsSetAssert(DescriptionOptions.Gender, type) ? null :
                         ((x?.Attribute("Gender")?.Value.Single()) ??
                          (!assembly.IsDefault ? null : type.GetCustomAttribute <GenderAttribute>()?.Gender) ??
                          (description == null ? null : NaturalLanguageTools.GetGender(description, assembly.Culture))),

                Members = !opts.IsSetAssert(DescriptionOptions.Members, type) ? null :
                          (from m in GetMembers(type)
                           where DescriptionManager.OnShouldLocalizeMember(m)
                           let value = xMembers?.TryGetC(m.Name) ?? (!assembly.IsDefault ? null : DescriptionManager.DefaultMemberDescription(m))
                                       where value != null
                                       select KeyValuePair.Create(m.Name, value))
                          .ToDictionary()
            };

            return(result);
        }