ICSharpCode.NRefactory.MonoCSharp.TypeDefinition.DoExpandBaseInterfaces C# (CSharp) Метод

DoExpandBaseInterfaces() публичный Метод

public DoExpandBaseInterfaces ( ) : void
Результат void
		public void DoExpandBaseInterfaces ()
		{
			if ((caching_flags & Flags.InterfacesExpanded) != 0)
				return;

			caching_flags |= Flags.InterfacesExpanded;

			//
			// Expand base interfaces. It cannot be done earlier because all partial
			// interface parts need to be defined before the type they are used from
			//
			if (iface_exprs != null) {
				foreach (var iface in iface_exprs) {
					if (iface == null)
						continue;

					var td = iface.MemberDefinition as TypeDefinition;
					if (td != null)
						td.DoExpandBaseInterfaces ();

					if (iface.Interfaces == null)
						continue;

					foreach (var biface in iface.Interfaces) {
						if (spec.AddInterfaceDefined (biface)) {
							TypeBuilder.AddInterfaceImplementation (biface.GetMetaInfo ());
						}
					}
				}
			}

			//
			// Include all base type interfaces too, see ImportTypeBase for details
			//
			if (base_type != null) {
				var td = base_type.MemberDefinition as TypeDefinition;
				if (td != null)
					td.DoExpandBaseInterfaces ();

				//
				// Simply use base interfaces only, they are all expanded which makes
				// it easy to handle generic type argument propagation with single
				// inflator only.
				//
				// interface IA<T> : IB<T>
				// interface IB<U> : IC<U>
				// interface IC<V>
				//
				if (base_type.Interfaces != null) {
					foreach (var iface in base_type.Interfaces) {
						spec.AddInterfaceDefined (iface);
					}
				}
			}
		}