Mono.CSharp.ImportedAssemblyDefinition.IsFriendAssemblyTo C# (CSharp) Method

IsFriendAssemblyTo() public method

public IsFriendAssemblyTo ( IAssemblyDefinition assembly ) : bool
assembly IAssemblyDefinition
return bool
        public bool IsFriendAssemblyTo(IAssemblyDefinition assembly)
        {
            if (internals_visible_to == null)
                return false;

            AssemblyName is_visible = null;
            if (internals_visible_to_cache == null) {
                internals_visible_to_cache = new Dictionary<IAssemblyDefinition, AssemblyName> ();
            } else {
                if (internals_visible_to_cache.TryGetValue (assembly, out is_visible))
                    return is_visible != null;
            }

            var token = assembly.GetPublicKeyToken ();
            if (token != null && token.Length == 0)
                token = null;

            foreach (var internals in internals_visible_to) {
                if (internals.Name != assembly.Name)
                    continue;

                if (token == null && assembly is AssemblyDefinition) {
                    is_visible = internals;
                    break;
                }

                if (!ArrayComparer.IsEqual (token, internals.GetPublicKeyToken ()))
                    continue;

                is_visible = internals;
                break;
            }

            internals_visible_to_cache.Add (assembly, is_visible);
            return is_visible != null;
        }