System.Runtime.Remoting.MetadataServices.SdlGenerator.Generate C# (CSharp) Méthode

Generate() private méthode

private Generate ( ) : void
Résultat void
		internal void Generate()
		{
			Util.Log("SdlGenerator.Generate");          
			// Generate the trasitive closure of the types reachable from
			// the supplied types
			while (_queue.Count > 0)
			{
				// Dequeue from not yet seen queue
				Type type = (Type) _queue.Dequeue();

				// Check if the type was encountered earlier
				String ns;
				Assembly assem;
				bool bInteropType = GetNSAndAssembly(type, out ns, out assem);
				Util.Log("SdlGenerator.Generate Dequeue "+type+" ns "+ns+" assem "+assem);                          
				XMLNamespace xns = LookupNamespace(ns, assem);
				if (xns != null)
				{
					if (xns.LookupSchemaType(type.Name) != null)
					{
						continue;
					}
				}
				else
				{
					xns = AddNamespace(ns, assem, bInteropType);
				}

				// Check if type needs to be represented as a SimpleSchemaType
				SimpleSchemaType ssType = SimpleSchemaType.GetSimpleSchemaType(type, xns, false);
				if (ssType != null)
				{
					// Add to namespace as a SimpleSchemaType
					xns.AddSimpleSchemaType(ssType);
				}
				else
				{
					// Check for the first MarshalByRef type
					bool bUnique = false;
					String connectURL = null;
					Hashtable connectTypeToServiceEndpoint = null;
					if ((_name == null) && s_marshalByRefType.IsAssignableFrom(type))
					{
						_name = type.Name;
						_targetNS = xns.Namespace;
						connectURL = _serviceEndpoint;
						connectTypeToServiceEndpoint = _typeToServiceEndpoint;
						bUnique = true;
					}
					RealSchemaType rsType = new RealSchemaType(type, xns, connectURL, connectTypeToServiceEndpoint, bUnique);

					// Add to namespace as a RealSchemaType
					xns.AddRealSchemaType(rsType);

					// Enqueue types reachable from this type
					EnqueueReachableTypes(rsType);
				}
			}

			// At this point we have the complete list of types
			// to be processed. Resolve cross references between
			// them
			Resolve();

			// At this stage, we are ready to print the schemas
			PrintSdl();

			// Flush cached buffers
			_textWriter.Flush();

			return;
		}