bool IAssemblySymbol.GivesAccessTo(IAssemblySymbol assemblyWantingAccess) { if (Equals(this, assemblyWantingAccess)) { return(true); } var myKeys = GetInternalsVisibleToPublicKeys(assemblyWantingAccess.Name); // 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 (myKeys.Any() && assemblyWantingAccess.IsNetModule()) { return(true); } foreach (var key in myKeys) { IVTConclusion conclusion = this.Identity.PerformIVTCheck(assemblyWantingAccess.Identity.PublicKey, key); Debug.Assert(conclusion != IVTConclusion.NoRelationshipClaimed); if (conclusion == IVTConclusion.Match || conclusion == IVTConclusion.OneSignedOneNot) { return(true); } } return(false); }
bool IAssemblySymbol.GivesAccessTo(IAssemblySymbol assemblyWantingAccess) { if (Equals(this, assemblyWantingAccess)) { return(true); } var assembly = assemblyWantingAccess as AssemblySymbol; if (assembly == null) { return(false); } var myKeys = GetInternalsVisibleToPublicKeys(assembly.Identity.Name); foreach (var key in myKeys) { IVTConclusion conclusion = assembly.PerformIVTCheck(key, this.Identity); Debug.Assert(conclusion != IVTConclusion.NoRelationshipClaimed); if (conclusion == IVTConclusion.Match || conclusion == IVTConclusion.OneSignedOneNot) { return(true); } } return(false); }
internal override bool AreInternalsVisibleToThisAssembly( AssemblySymbol potentialGiverOfAccess ) { IVTConclusion conclusion = MakeFinalIVTDetermination(potentialGiverOfAccess); return(conclusion == IVTConclusion.Match || conclusion == IVTConclusion.OneSignedOneNot); }