Castle.MicroKernel.Handlers.AbstractHandler.ObtainDependencyDetails C# (CSharp) Method

ObtainDependencyDetails() public method

Returns human readable list of dependencies this handler is waiting for.
public ObtainDependencyDetails ( IList dependenciesChecked ) : String
dependenciesChecked IList
return String
		public String ObtainDependencyDetails(IList dependenciesChecked)
		{
			if (CurrentState == HandlerState.Valid)
			{
				return String.Empty;
			}

			if (dependenciesChecked.Contains(this))
			{
				return String.Empty;
			}

			dependenciesChecked.Add(this);

			StringBuilder sb = new StringBuilder();

			sb.AppendFormat("\r\n{0} is waiting for the following dependencies: \r\n", ComponentModel.Name);

			if (DependenciesByService.Count != 0)
			{
				sb.Append("\r\nServices: \r\n");

				foreach (Type type in DependenciesByService.Keys)
				{
					IHandler handler = Kernel.GetHandler(type);

					if (handler == null)
					{
						sb.AppendFormat("- {0} which was not registered. \r\n", type.FullName);
					}
					else if (handler == this)
					{
						sb.AppendFormat("- {0}. \r\n  A dependency cannot be satisfied by itself, " +
										"did you forget to add a parameter name to differentiate between the " +
										"two dependencies? \r\n", type.FullName);
					}
					else
					{
						sb.AppendFormat("- {0} which was registered but is also waiting for " +
										"dependencies. \r\n", type.FullName);

						IExposeDependencyInfo info = handler as IExposeDependencyInfo;

						if (info != null)
						{
							sb.Append(info.ObtainDependencyDetails(dependenciesChecked));
						}
					}
				}
			}

			if (DependenciesByKey.Count != 0)
			{
				sb.Append("\r\nKeys (components with specific keys)\r\n");

				foreach (DictionaryEntry entry in DependenciesByKey)
				{
					String key = entry.Key.ToString();

					IHandler handler = Kernel.GetHandler(key);

					if (handler == null)
					{
						sb.AppendFormat("- {0} which was not registered. \r\n", key);
					}
					else
					{
						sb.AppendFormat("- {0} which was registered but is also " +
										"waiting for dependencies. \r\n", key);

						IExposeDependencyInfo info = handler as IExposeDependencyInfo;

						if (info != null)
						{
							sb.Append(info.ObtainDependencyDetails(dependenciesChecked));
						}
					}
				}
			}

			return sb.ToString();
		}