Ejemplo n.º 1
0
        /// <summary>
        /// 未解決の参照を修正する
        /// </summary>
        /// <param name="analyzeResults">対象ファイルの解析結果リスト</param>
        private void FixUnknownReferences(ref List <AnalyzeResult> analyzeResults)
        {
            // 実行中のメソッド名を設定する
            RunMethodName = MethodBase.GetCurrentMethod().Name;

            // 解析ファイルの作成
            var results = new List <AnalyzeResult>();

            results.AddRange(analyzeResults);

            var dictionary = new AnalyzeResult();

            dictionary.ClassNames.Add("Dictionary");
            dictionary.ImportPath = "Dictionary";
            results.Add(dictionary);

            var list = new AnalyzeResult();

            list.ClassNames.Add("List");
            list.ImportPath = "List";
            results.Add(list);

            // 未解決の参照を解消する
            foreach (var analyzeResult in results)
            {
                if (!analyzeResult.UnknownReferences.Any())
                {
                    continue;
                }

                // 未解決の参照の設定を行う
                SetReference(analyzeResult);
            }

            // 変換済のTSファイル情報リストから検索・設定する
            void SetReference(AnalyzeResult target)
            {
                foreach (var searchName in target.UnknownReferences.Keys.ToList())
                {
                    var refrences = results.Where(item => item.ClassNames.Contains(searchName));
                    if (refrences.Any())
                    {
                        // 変換済のTSファイル情報に未解決の参照がある場合は設定する
                        target.UnknownReferences[searchName] = refrences.First().ImportPath;
                    }
                }
            }
        }