Boo.Lang.Compiler.Steps.BindNamespaces.TryAutoAddAssemblyReference C# (CSharp) Метод

TryAutoAddAssemblyReference() приватный Метод

private TryAutoAddAssemblyReference ( Boo import ) : bool
import Boo
Результат bool
        private bool TryAutoAddAssemblyReference(Boo.Lang.Compiler.Ast.Import import)
        {
            Assembly asm = Parameters.FindAssembly(import.Namespace);
            if (asm != null) return false; //name resolution already failed earlier, don't try twice

            asm = Parameters.LoadAssembly(import.Namespace, false);
            if (asm == null) {
                //try generalized namespaces
                string[] namespaces = import.Namespace.Split(new char[]{'.',});
                if (namespaces.Length == 1) {
                    return false;
                } else {
                    string ns;
                    int level = namespaces.Length - 1;
                    while (level > 0) {
                        ns = string.Join(".", namespaces, 0, level);
                        asm = Parameters.FindAssembly(ns);
                        if (asm != null) return false; //name resolution already failed earlier, don't try twice
                        asm = Parameters.LoadAssembly(ns, false);
                        if (asm != null) break;
                        level--;
                    }
                }
            }

            if (asm != null)
            {
                try
                {
                    NameResolutionService.OrganizeAssemblyTypes(asm);
                }
                catch (Exception /*ignored*/)
                {
                    return false;
                }
                Parameters.AddAssembly(asm);
                import.AssemblyReference = new ReferenceExpression(import.LexicalInfo, import.Namespace);
                import.AssemblyReference.Entity = new AssemblyReference(asm);
                return true;
            }
            return false;
        }