예제 #1
0
 public static bool InternalsAreVisible(Module referringModule, Module declaringModule) {
   if (referringModule == declaringModule) return true;
   if (referringModule == null || declaringModule == null) return false;
   AssemblyNode referringAssembly = referringModule.ContainingAssembly;
   if (referringAssembly == null) referringAssembly = referringModule as AssemblyNode;
   AssemblyNode declaringAssembly = declaringModule.ContainingAssembly;
   if (declaringAssembly == null) declaringAssembly = declaringModule as AssemblyNode;
   if (referringAssembly == declaringAssembly) return true;
   if (referringAssembly == null) return referringModule.ContainsModule(declaringModule);
   if (referringAssembly.ContainsModule(declaringModule)) return true;
   return referringAssembly.MayAccessInternalTypesOf(declaringAssembly);
 }
예제 #2
0
 protected virtual bool MayAccessInternals(Module referringModule, TypeNode referredToType) {
   if (referringModule == null || referredToType == null) return false;
   Module referredToModule = referredToType.DeclaringModule;
   if (referredToModule == null) return false;
   if (referringModule == referredToModule) return true;
   AssemblyNode referringAssembly = referringModule.ContainingAssembly;
   AssemblyNode referredToAssembly = referredToModule.ContainingAssembly;
   if (referringAssembly == null) referringAssembly = referringModule as AssemblyNode;
   if (referredToAssembly == null) referredToAssembly = referredToModule as AssemblyNode;
   if (referringAssembly == null) return referringModule.ContainsModule(referredToModule);
   if (referringAssembly == referredToAssembly) return true;
   if (referringAssembly.ContainsModule(referringModule)) return true;
   return referringAssembly.MayAccessInternalTypesOf(referredToAssembly);
 }