internal void WriteMember(NameInfo memberNameInfo, NameInfo typeNameInfo, Object value)
{
memberNameInfo.Dump("WriteMember memberNameInfo");
typeNameInfo.Dump("WriteMember typeNameInfo");
attrList.Clear();
if ((typeNameInfo.NItype != null) && (memberNameInfo.NItransmitTypeOnMember || (memberNameInfo.NItransmitTypeOnObject && !memberNameInfo.NIisArrayItem)))
{
attrList.Put("xsi:type", TypeNameTagResolver(typeNameInfo, true));
}
String stringValue = null;
if (value != null)
{
if (typeNameInfo.NIprimitiveTypeEnum == InternalPrimitiveTypeE.QName)
{
SoapQName soapQName = (SoapQName)value;
if (soapQName.Key == null || soapQName.Key.Length == 0)
attrList.Put("xmlns", "");
else
attrList.Put("xmlns:"+soapQName.Key, soapQName.Namespace);
stringValue = soapQName.ToString();
}
else
{
if (value is String)
stringValue = (String)value;
else
stringValue = Converter.SoapToString(value, typeNameInfo.NIprimitiveTypeEnum);
}
}
NameInfo tempNameInfo = null;
// If XmlElement attribute was defined on member, then an alternate member name has been specifed
if (typeNameInfo.NInameSpaceEnum == InternalNameSpaceE.Interop)
tempNameInfo = typeNameInfo;
String memberName = MemberElementName(memberNameInfo, tempNameInfo);
NamespaceAttribute();
Write(InternalElementTypeE.Member, memberName, attrList, stringValue, true, Converter.IsEscaped(typeNameInfo.NIprimitiveTypeEnum));
}