Exemplo n.º 1
0
        public ITypeDefinition GetTypeDefinition(string ns, string name, int typeParameterCount)
        {
            var key = new FullNameAndTypeParameterCount(ns ?? string.Empty, name, typeParameterCount);
            DefaultResolvedTypeDefinition def;

            if (GetTypes().TryGetValue(key, out def))
            {
                return(def);
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 2
0
 ITypeDefinition INamespace.GetTypeDefinition(string name, int typeParameterCount)
 {
     if (types != null)
     {
         var             key = new FullNameAndTypeParameterCount(fullName, name, typeParameterCount);
         ITypeDefinition typeDef;
         if (types.TryGetValue(key, out typeDef))
         {
             return(typeDef);
         }
         else
         {
             return(null);
         }
     }
     else
     {
         return(assembly.GetTypeDefinition(fullName, name, typeParameterCount));
     }
 }
				ITypeDefinition INamespace.GetTypeDefinition(string name, int typeParameterCount)
				{
					var key = new FullNameAndTypeParameterCount(ns.FullName, name, typeParameterCount);
					IUnresolvedTypeDefinition unresolvedTypeDef;
					if (assembly.unresolvedTypeDict.TryGetValue(key, out unresolvedTypeDef))
						return assembly.GetTypeDefinition(unresolvedTypeDef);
					else
						return null;
				}
			public ITypeDefinition GetTypeDefinition(string ns, string name, int typeParameterCount)
			{
				var key = new FullNameAndTypeParameterCount(ns ?? string.Empty, name, typeParameterCount);
				
				IUnresolvedTypeDefinition td;
				ITypeReference typeRef;
				if (unresolvedAssembly.typeDefinitions.TryGetValue(key, out td))
					return GetTypeDefinition(td);
				else if (unresolvedAssembly.typeForwarders.TryGetValue(key, out typeRef))
					return typeRef.Resolve(compilation.TypeResolveContext).GetDefinition();
				else
					return null;
			}
		public IUnresolvedTypeDefinition GetTypeDefinition(string ns, string name, int typeParameterCount)
		{
			var key = new FullNameAndTypeParameterCount(ns ?? string.Empty, name, typeParameterCount);
			IUnresolvedTypeDefinition td;
			if (typeDefinitions.TryGetValue(key, out td))
				return td;
			else
				return null;
		}
		/// <summary>
		/// Adds a type forwarder.
		/// This adds both an assembly attribute and an internal forwarder entry, which will be used
		/// by the resolved assembly to provide the forwarded types.
		/// </summary>
		/// <param name="typeName">The name of the type.</param>
		/// <param name="referencedType">The reference used to look up the type in the target assembly.</param>
		public void AddTypeForwarder(FullNameAndTypeParameterCount typeName, ITypeReference referencedType)
		{
			if (referencedType == null)
				throw new ArgumentNullException("referencedType");
			FreezableHelper.ThrowIfFrozen(this);
			var attribute = new DefaultUnresolvedAttribute(typeForwardedToAttributeTypeRef, new[] { KnownTypeReference.Type });
			attribute.PositionalArguments.Add(new TypeOfConstantValue(referencedType));
			assemblyAttributes.Add(attribute);
			
			typeForwarders[typeName] = referencedType;
		}
		/// <summary>
		/// Adds a new top-level type definition to this assembly.
		/// </summary>
		/// <remarks>DefaultUnresolvedAssembly does not support partial classes.
		/// Adding more than one part of a type will cause an ArgumentException.</remarks>
		public void AddTypeDefinition(IUnresolvedTypeDefinition typeDefinition)
		{
			if (typeDefinition == null)
				throw new ArgumentNullException("typeDefinition");
			if (typeDefinition.DeclaringTypeDefinition != null)
				throw new ArgumentException("Cannot add nested types.");
			FreezableHelper.ThrowIfFrozen(this);
			var key = new FullNameAndTypeParameterCount(typeDefinition.Namespace, typeDefinition.Name, typeDefinition.TypeParameters.Count);
			typeDefinitions.Add(key, typeDefinition);
		}
Exemplo n.º 8
0
			ITypeDefinition INamespace.GetTypeDefinition(string name, int typeParameterCount)
			{
				if (types != null) {
					var key = new FullNameAndTypeParameterCount(fullName, name, typeParameterCount);
					ITypeDefinition typeDef;
					if (types.TryGetValue(key, out typeDef))
						return typeDef;
					else
						return null;
				} else {
					return assembly.GetTypeDefinition(fullName, name, typeParameterCount);
				}
			}
Exemplo n.º 9
0
		public ITypeDefinition GetTypeDefinition(string ns, string name, int typeParameterCount)
		{
			var key = new FullNameAndTypeParameterCount(ns ?? string.Empty, name, typeParameterCount);
			ITypeDefinition def;
			if (GetTypes().TryGetValue(key, out def))
				return def;
			else
				return null;
		}