System.Runtime.Serialization.Formatters.Soap.SoapWriter.ParseAssemblyName C# (CSharp) Method

ParseAssemblyName() private method

private ParseAssemblyName ( String typeFullName, String assemName ) : DottedInfo
typeFullName String
assemName String
return DottedInfo
		private DottedInfo ParseAssemblyName(String typeFullName, String assemName)
		{
			InternalST.Soap( this, "ParseAssemblyName Entry typeFullName ",typeFullName," assemName ",assemName);
			DottedInfo dottedInfo;
			String nameSpace = null;
			String name = null;
			String dottedAssemblyName = null;
			int assemId;
			if (typeNameToDottedInfoTable.ContainsKey(typeFullName))
			{
				// type name already seen 
				dottedInfo = (DottedInfo)typeNameToDottedInfoTable[typeFullName];
			}
			else
			{
				// type name new, find nameSpace and concatenate the assembly name to it.
				int index = typeFullName.LastIndexOf('.');
				if (index > 0)
					nameSpace = typeFullName.Substring(0, index);
				else
					nameSpace = "";


                dottedAssemblyName = SoapServices.CodeXmlNamespaceForClrTypeNamespace(nameSpace, assemName);

				name = typeFullName.Substring(index+1);				

				if (dottedAssemToAssemIdTable.ContainsKey(dottedAssemblyName))
				{
					// The dotted assembly name has been seen before, get the assembly Id
					assemId = (int)dottedAssemToAssemIdTable[dottedAssemblyName];
				}
				else
				{
					// The dotted assembly name has not been seen before, calculate a new
					// assemId and remember it so that it can be added to the Envelope xml namespaces
					assemId = dottedAssemId++;
					assemblyInfos[AssemIdToString(assemId)] = new AssemblyInfo(assemId, dottedAssemblyName, false);
					dottedAssemToAssemIdTable[dottedAssemblyName] = assemId;
				}

				// Create a new DottedInfo structure and remember it with the type name
				dottedInfo = new DottedInfo();
				dottedInfo.dottedAssemblyName = dottedAssemblyName;
				dottedInfo.name = name;
				dottedInfo.nameSpace = nameSpace;
				dottedInfo.assemId = assemId;
				typeNameToDottedInfoTable[typeFullName] = dottedInfo;			
				InternalST.Soap( this, "ParseAssemblyName new dotted Assembly name ",dottedInfo.name,", dottedAssemblyName ",dottedInfo.dottedAssemblyName,", assemId ",dottedInfo.assemId, " typeFullName ", typeFullName);
			}
			InternalST.Soap( this, "ParseAssemblyName Exit nameSpace ",dottedInfo.nameSpace," name ",dottedInfo.name," assemblyName ",dottedInfo.dottedAssemblyName," assemId ",dottedInfo.assemId);
			return dottedInfo;
		}