Как получить пространство имен в xmlelement, используя свойство? - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть два класса, и мне нужно, чтобы пространство имен свойства PackageItem входило в соответствии со свойством PackageItemNameSpace

Поскольку у меня есть несколько классов, которые наследуются от PackageItem, и каждый класс имеет свое собственное пространство имен

public class Package
{
    //HERE namespace dynamically, getting in YourName property
    public PackageItem PackageItem {get;set;}
}

public class PackageItem
{
    public string PackageItemNameSpace {get;set;}
}

Как задать пространство имен, входящее в свойство PackageItemNameSpace?

My Serialize Helper:

public static string Serialize<T>(T obj, string @namespace = "", bool omitDeclaration = false, bool omitUnusedCharacters = true)
{
    var serializer = new XmlSerializer(typeof(T), @namespace);

    var xmlWriterSettings = new XmlWriterSettings()
    {
        Encoding = Encoding.UTF8
    };

    if (omitUnusedCharacters)
    {
        xmlWriterSettings.Indent = false;
        xmlWriterSettings.NewLineChars = "";
        xmlWriterSettings.NewLineOnAttributes = false;
    }

    if (omitDeclaration)
    {
        xmlWriterSettings.OmitXmlDeclaration = true;
        xmlWriterSettings.ConformanceLevel = ConformanceLevel.Auto;
    }

    using (var stream = new StringWriter())
    {
        using (var xmlWriter = XmlWriter.Create(stream, xmlWriterSettings))
        {
            if (string.IsNullOrEmpty(@namespace))
            {
                serializer.Serialize(xmlWriter, obj);
            }
            else
            {
                var xmlSerializerNamespaces = new XmlSerializerNamespaces();
                xmlSerializerNamespaces.Add("", @namespace);

                serializer.Serialize(xmlWriter, obj, xmlSerializerNamespaces);
            }

            return stream.ToString();
        }
    }
}
...