// using System;
// using System.Collections;
// using System.Collections.Generic;
// using System.IO;
// using System.Linq;
// using System.Reflection;
// using UnityEditor;
// using UnityEngine;
//
// namespace TyphoonUI
// {
// ///
// /// 视图类引用关系
// ///
// public class ViewClassReference
// {
// public Type ViewType;
// public HashSet ReferenceClass = new HashSet();
// }
//
//
// public class ViewClassReferenceWindow : EditorWindow
// {
// public static List References;
//
// private Vector2 _scroll;
//
// [MenuItem("TyphoonUI/代码导出/查看View类引用关系")]
// public static void Open()
// {
// References = LoadViewReference();
// var win = GetWindow();
// win.titleContent = new GUIContent("View引用关系");
// win.minSize = new Vector2(600, 400);
// win.Show();
// }
//
//
// private static List LoadViewReference()
// {
// var data = new Dictionary();
// var all = new HashSet();
// var assemblies = AppDomain.CurrentDomain.GetAssemblies();
// Type interfaceType = typeof(IInitializeView);
// foreach (var assembly in assemblies)
// {
// var types = assembly.GetTypes();
// foreach (var type in types)
// {
// all.Add(type);
// var isView = type.GetInterface(interfaceType.FullName) != null;
// if (isView)
// {
// data.Add(type, new ViewClassReference()
// {
// ViewType = type,
// });
// }
// }
// }
//
// foreach (var element in all)
// {
// var fields = element.GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
// foreach (var field in fields)
// {
// if (data.ContainsKey(field.FieldType))
// {
// data[field.FieldType].ReferenceClass.Add(element);
// }
// }
// }
//
// return data.Values.ToList();
// }
//
//
// private void OnGUI()
// {
// if (References == null)
// {
// Close();
// }
//
// if (References != null)
// {
// GUILayout.BeginHorizontal();
// GUIDrawer.DrawTitleLabel("序号", GUILayout.Width(44));
// GUILayout.Space(1);
// GUIDrawer.DrawTitleLabel("View Script");
// GUILayout.Space(1);
// GUIDrawer.DrawTitleLabel("引用计数", GUILayout.Width(100));
// GUILayout.Space(1);
// GUIDrawer.DrawTitleLabel("", GUILayout.Width(60));
// GUILayout.Space(13);
// GUILayout.EndHorizontal();
// GUILayout.Space(1);
// _scroll = GUILayout.BeginScrollView(_scroll, false, true);
// var index = 0;
// foreach (var element in References)
// {
// index += 1;
// GUILayout.BeginHorizontal();
// GUIDrawer.DrawTitleLabel(index.ToString(), GUILayout.Width(44));
// GUILayout.Space(1);
// GUIDrawer.DrawTitleLabel(element.ViewType.Name);
// GUILayout.Space(1);
// GUIDrawer.DrawTitleLabel(element.ReferenceClass.Count.ToString(), GUILayout.Width(100));
// GUILayout.Space(1);
// if (GUILayout.Button("删除", Styles.R2Button, GUILayout.Width(60)))
// {
// var scriptPath = $"{Paths.ExportCodeFolder}/{element.ViewType.FullName.Replace(".", "/")}.cs";
// if (!File.Exists(scriptPath))
// {
// Debug.Log($"找不到:{scriptPath}");
// }
// }
//
// GUILayout.EndHorizontal();
// }
//
// GUILayout.EndScrollView();
// }
// }
// }
// }