bool IAssemblySymbol.GivesAccessTo(IAssemblySymbol assemblyWantingAccess) { if (Equals(this, assemblyWantingAccess)) { return(true); } var myKeys = UnderlyingAssemblySymbol.GetInternalsVisibleToPublicKeys(assemblyWantingAccess.Name); if (myKeys.Any()) { // We have an easy out here. Suppose the assembly wanting access is // being compiled as a module. You can only strong-name an assembly. So we are going to optimistically // assume that it is going to be compiled into an assembly with a matching strong name, if necessary. if (assemblyWantingAccess.IsNetModule()) { return(true); } AssemblyIdentity identity = UnderlyingAssemblySymbol.Identity; foreach (var key in myKeys) { IVTConclusion conclusion = identity.PerformIVTCheck(assemblyWantingAccess.Identity.PublicKey, key); Debug.Assert(conclusion != IVTConclusion.NoRelationshipClaimed); if (conclusion == IVTConclusion.Match || conclusion == IVTConclusion.OneSignedOneNot) { return(true); } } } return(false); }
ImmutableArray <INamedTypeSymbol> IAssemblySymbol.GetForwardedTypes() { return(UnderlyingAssemblySymbol .GetAllTopLevelForwardedTypes() .Select(t => t.GetPublicSymbol()) .OrderBy(t => t.ToDisplayString(SymbolDisplayFormat.QualifiedNameArityFormat)) .AsImmutable()); }
INamedTypeSymbol IAssemblySymbol.ResolveForwardedType(string fullyQualifiedMetadataName) { return(UnderlyingAssemblySymbol.ResolveForwardedType(fullyQualifiedMetadataName).GetPublicSymbol()); }
AssemblyMetadata IAssemblySymbol.GetMetadata() => UnderlyingAssemblySymbol.GetMetadata();
INamedTypeSymbol IAssemblySymbol.GetTypeByMetadataName(string metadataName) { return(UnderlyingAssemblySymbol.GetTypeByMetadataName(metadataName).GetPublicSymbol()); }