private async Task<string> StartElementAsync(string prefix, string localName, string ns, XmlDictionaryString xNs)
{
await FlushBase64Async().ConfigureAwait(false);
await AutoCompleteAsync(WriteState.Element).ConfigureAwait(false);
Element element = EnterScope();
if (ns == null)
{
if (prefix == null)
prefix = string.Empty;
ns = _nsMgr.LookupNamespace(prefix);
if (ns == null)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.Format(SR.XmlUndefinedPrefix, prefix), nameof(prefix)));
}
else if (prefix == null)
{
prefix = _nsMgr.LookupPrefix(ns);
if (prefix == null)
{
prefix = string.Empty;
_nsMgr.AddNamespace(string.Empty, ns, xNs);
}
}
else
{
_nsMgr.AddNamespaceIfNotDeclared(prefix, ns, xNs);
}
element.Prefix = prefix;
element.LocalName = localName;
return prefix;
}