Пример #1
0
            static public void Instruction(ResolutionStatus status, string scope, string format, params object[] args)
            {
                string indent = "    ";

                format += " < " + scope;
                if (status == ResolutionStatus.Success)
                {
                    if (!quiet)
                    {
                        WriteColor(indent + "\u2713 " + format, args, ConsoleColor.Green);
                    }
                }
                else if (status == ResolutionStatus.Failure)
                {
                    WriteColor(indent + "\u2717 " + format, args, ConsoleColor.Red);
                }
                else if (status == ResolutionStatus.PInvoke)
                {
                    WriteColor(indent + "P " + format, args, ConsoleColor.DarkYellow);
                }
                else // skipped
                {
                    if (!quiet)
                    {
                        WriteColor(indent + "\u271D " + format, args, ConsoleColor.Gray);
                    }
                }
            }
Пример #2
0
 internal ResolutionStatus Resolve(ResolutionResult resolutionResult, ConvertionManager convertionManager, ResolutionContext ctx)
 {
     if (_resolutionStatus.IsFailed())
     {
         return(ResolutionStatus.Failed);
     }
     if (_resolutionStatus.IsSuccess())
     {
         return(ResolutionStatus.Success);
     }
     _resolutionStatus = DoResolve(resolutionResult, convertionManager, ctx);
     return(_resolutionStatus);
 }
Пример #3
0
 public ScannedType(
     int token,
     bool isLocal,
     string name,
     string theNamespace,
     IAssembly assembly                = null,
     IType baseType                    = null,
     TypeAttributes attributes         = default(TypeAttributes),
     List <IType> interfaces           = null,
     ResolutionStatus resolutionStatus = default(ResolutionStatus))
 {
     Token                 = token;
     this.isLocal          = isLocal;
     this.definedNamespace = theNamespace;
     this.name             = name;
     this.baseType         = baseType;
     this.attributes       = attributes;
     this.assembly         = assembly;
     this.interfaces       = interfaces;
     ResolutionStatus      = resolutionStatus;
 }
Пример #4
0
        internal ResolutionStatus GetStatus()
        {
            if (_typeResolution.Length > 0 || _membersResolution.Length > 0 || _mismatchedMembers.Length > 0)
            {
                _status = new ResolutionStatus
                {
                    unresolvedTypesCount      = _typeResolution.Length,
                    resolvedTypesCount        = _typeResolution.Count(t => t.resolvedTypeName != null),
                    unresolvedMembersCount    = _membersResolution.Select(mr => mr.unresolvedMembers.Count).Sum(),
                    resolvedMembersCount      = _membersResolution.Select(mr => mr.unresolvedMembers.Count(m => m.resolvedName != null)).Sum(),
                    unresolvedMismatchesCount = _mismatchedMembers.Length,
                    resolvableMismatchesCount = _mismatchedMembers.Count(mm => mm.isCorrectable),
                    resolvedMismatchesCount   = _mismatchedMembers.Count(mm => mm.resolvedTypeName != null || mm.resolvedValue != null)
                };
            }
            else
            {
                _status = new ResolutionStatus();
            }

            return(_status);
        }
Пример #5
0
 internal static bool IsSuccess(this ResolutionStatus status)
 {
     return(status == ResolutionStatus.Success);
 }
Пример #6
0
 internal static bool IsPending(this ResolutionStatus status)
 {
     return((status & ResolutionStatus.Pending) != 0);
 }
Пример #7
0
 internal static bool IsFailed(this ResolutionStatus status)
 {
     return((status & ResolutionStatus.Failed) != 0);
 }
Пример #8
0
 public static void Instruction(ResolutionStatus status, string scope, string format, params object[] args)
 {
     Console.Write("    ");
       format += " < " + scope;
       if (status == ResolutionStatus.Success)
       WriteColor("\u2713 " + format, args, ConsoleColor.Green);
       else if (status == ResolutionStatus.Failure)
       WriteColor("\u2717 " + format, args, ConsoleColor.Red);
       else if (status == ResolutionStatus.PInvoke)
       WriteColor("P " + format, args, ConsoleColor.DarkYellow);
       else
       WriteColor("\u271D " + format, args, ConsoleColor.Gray);
 }
Пример #9
0
        internal ResolutionStatus Resolve(ResolutionResult resolutionResult, ConvertionManager convertionManager, ResolutionContext ctx)
        {
            if (_resolutionStatus != ResolutionStatus.Pending)
            {
                return(_resolutionStatus);
            }

            if (AddinActivator != null)
            {
                var resolutionStatus = AddinActivator.Resolve(resolutionResult, convertionManager, ctx);
                if (resolutionStatus == ResolutionStatus.Failed)
                {
                    _resolutionStatus = ResolutionStatus.Failed;
                    return(_resolutionStatus);
                }
            }

            if (ExtensionPoints != null)
            {
                foreach (var extensionPoint in ExtensionPoints)
                {
                    var resolutionStatus = extensionPoint.Resolve(resolutionResult, convertionManager, ctx);
                    if (resolutionStatus == ResolutionStatus.Success)
                    {
                        continue;
                    }
                    else if (resolutionStatus == ResolutionStatus.Failed)
                    {
                        _resolutionStatus = ResolutionStatus.Failed;
                        return(_resolutionStatus);
                    }
                    else
                    {
                        return(ResolutionStatus.Pending);
                    }
                }
            }

            var extensionBuilders = GetAllExtensionBuilders();

            if (extensionBuilders != null)
            {
                foreach (var extensionBuilder in extensionBuilders)
                {
                    var resolutionStatus = extensionBuilder.Resolve(resolutionResult, convertionManager, ctx);
                    if (resolutionStatus == ResolutionStatus.Success)
                    {
                        continue;
                    }
                    else if (resolutionStatus == ResolutionStatus.Failed)
                    {
                        _resolutionStatus = ResolutionStatus.Failed;
                        return(_resolutionStatus);
                    }
                    else
                    {
                        return(ResolutionStatus.Pending);
                    }
                }
            }

            var extensions = GetAllExtensions();

            if (extensions != null)
            {
                foreach (var extension in extensions)
                {
                    var resolutionStatus = extension.Resolve(resolutionResult, convertionManager, ctx);
                    if (resolutionStatus == ResolutionStatus.Success)
                    {
                        continue;
                    }
                    else if (resolutionStatus == ResolutionStatus.Failed)
                    {
                        _resolutionStatus = ResolutionStatus.Failed;
                        return(_resolutionStatus);
                    }
                    else
                    {
                        return(ResolutionStatus.Pending);
                    }
                }
            }

            if (_referencedAssemblySets != null)
            {
                foreach (var referencedAssemblySet in _referencedAssemblySets)
                {
                    var resolutionStatus = referencedAssemblySet.Resolve(resolutionResult, convertionManager, ctx);
                    if (resolutionStatus == ResolutionStatus.Success)
                    {
                        continue;
                    }
                    else if (resolutionStatus == ResolutionStatus.Failed)
                    {
                        _resolutionStatus = ResolutionStatus.Failed;
                        return(_resolutionStatus);
                    }
                    else
                    {
                        return(ResolutionStatus.Pending);
                    }
                }
            }

            _resolutionStatus = ResolutionStatus.Success;
            return(_resolutionStatus);
        }