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); } }
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); }
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); } }
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; }