Esempio n. 1
0
        public virtual IBinding Resolve(string name)
        {
            foreach (TypeMember member in _typeDefinition.Members)
            {
                if (name == member.Name)
                {
                    IBinding binding = BindingManager.GetOptionalBinding(member);
                    if (null == binding)
                    {
                        binding = CreateCorrectBinding(member);
                        _bindingManager.Bind(member, binding);
                    }

                    if (BindingType.Type == binding.BindingType)
                    {
                        binding = _bindingManager.ToTypeReference((ITypeBinding)binding);
                    }
                    return(binding);
                }
            }

            foreach (TypeReference baseType in _typeDefinition.BaseTypes)
            {
                IBinding binding = _bindingManager.GetBoundType(baseType).Resolve(name);
                if (null != binding)
                {
                    return(binding);
                }
            }
            return(null);
        }
Esempio n. 2
0
        internal IBinding Resolve(string name, Assembly assembly)
        {
            NamespaceBinding binding = (NamespaceBinding)_childrenNamespaces[name];

            if (null != binding)
            {
                return(new AssemblyQualifiedNamespaceBinding(assembly, binding));
            }

            ArrayList types = (ArrayList)_assemblies[assembly];

            if (null != types)
            {
                foreach (Type type in types)
                {
                    if (name == type.Name)
                    {
                        return(_bindingManager.ToTypeReference(type));
                    }
                }
            }
            return(null);
        }
Esempio n. 3
0
        public IBinding Resolve(string name)
        {
            TypeMember member = _members[name];

            if (null != member)
            {
                return(_bindingManager.ToTypeReference(
                           (ITypeBinding)BindingManager.GetBinding(member)
                           ));
            }

            IBinding binding = null;

            foreach (INamespace ns in _using)
            {
                // todo: resolve name in all namespaces...
                binding = ns.Resolve(name);
                if (null != binding)
                {
                    break;
                }
            }
            return(binding);
        }