コード例 #1
0
ファイル: TypeHelper.cs プロジェクト: alisaffari97/Fort-Unity
        private static bool IsTypeMachPlugin(string assemblyName, AllTypeCategory category)
        {
            if (!assemblyName.StartsWith("Fort"))
            {
                return(false);
            }
            Regex regex = new Regex(@"^Fort([a-z,A-Z]*)\-(Editor|Game)\-Plugin$", RegexOptions.IgnoreCase);
            Match match = regex.Match(assemblyName);

            if (!match.Success)
            {
                return(false);
            }
            switch (category)
            {
            case AllTypeCategory.Game:
                return(match.Groups[2].Value == "Game");

            case AllTypeCategory.Editor:
                return(match.Groups[2].Value == "Editor");

            case AllTypeCategory.All:
                return(true);

            default:
                throw new ArgumentOutOfRangeException("category", category, null);
            }
        }
コード例 #2
0
ファイル: TypeHelper.cs プロジェクト: alisaffari97/Fort-Unity
        public static Type[] GetAllTypes(AllTypeCategory category)
        {
            switch (category)
            {
            case AllTypeCategory.Game:
                return
                    (AppDomain.CurrentDomain.GetAssemblies()
                     .Where(
                         assembly =>
                         assembly.GetName().Name == "Assembly-CSharp" ||
                         IsTypeMachPlugin(assembly.GetName().Name, AllTypeCategory.Game))
                     .SelectMany(assembly => assembly.GetTypes())
                     .ToArray());

            case AllTypeCategory.Editor:
                return
                    (AppDomain.CurrentDomain.GetAssemblies()
                     .Where(
                         assembly =>
                         assembly.GetName().Name == "Assembly-CSharp-Editor" ||
                         IsTypeMachPlugin(assembly.GetName().Name, AllTypeCategory.Editor))
                     .SelectMany(assembly => assembly.GetTypes())
                     .ToArray());

            case AllTypeCategory.All:
                return
                    (AppDomain.CurrentDomain.GetAssemblies()
                     .Where(
                         assembly =>
                         assembly.GetName().Name == "Assembly-CSharp" ||
                         assembly.GetName().Name == "Assembly-CSharp-Editor" ||
                         IsTypeMachPlugin(assembly.GetName().Name, AllTypeCategory.All))
                     .SelectMany(assembly => assembly.GetTypes())
                     .ToArray());

            default:
                throw new ArgumentOutOfRangeException("category", category, null);
            }
        }