public static void Run() { Setup(); using (var infoFile = File.CreateText("FindLog_Info.txt")) using (var errFile = File.CreateText("FindLog_Error.txt")) using (var outputFile = File.CreateText("FindLog_Output.txt")) { var obj = Instance.mUnit; ReferenceAnalysisAlgorithm.TypeGraph graph; using (new ReferenceAnalysisAlgorithm.ScopeTimer("Build type graph", infoFile.WriteLine)) { graph = new ReferenceAnalysisAlgorithm.TypeGraph(obj.GetType(), new ReferenceAnalysisAlgorithm.ReflectionPolicy() { GetInstanceProperties = type => { #if UNITY_EDITOR if (type.IsArray) { return(Enumerable.Empty <PropertyInfo>()); } if (!type.IsSubclassOf(typeof(Delegate)) && type.Assembly != typeof(UnityEngine.Vector3).Assembly) { return(Enumerable.Empty <PropertyInfo>()); } return (from prop in type.GetProperties(BindingFlags.Public | BindingFlags.Instance) where !prop.PropertyType.ContainsGenericParameters let getter = prop.GetGetMethod() where getter != null && getter.GetParameters().Length == 0 select prop); #else return(Enumerable.Empty <PropertyInfo>()); #endif }, }); } var finder = new ReferenceAnalysisAlgorithm.ReferenceFinder(graph) { LogInfo = infoFile.WriteLine, LogError = errFile.WriteLine, }; finder.FindReferences(obj, outputFile.WriteLine); } Cleanup(); }
public static void Run() { Setup(); using (var infoFile = File.CreateText("FindLog_Info.txt")) using (var errFile = File.CreateText("FindLog_Error.txt")) using (var outputFile = File.CreateText("FindLog_Output.txt")) { var obj = Instance.mUnit; ReferenceAnalysisAlgorithm.TypeGraph graph; using (new ReferenceAnalysisAlgorithm.ScopeTimer("Build type graph", infoFile.WriteLine)) { graph = new ReferenceAnalysisAlgorithm.TypeGraph(obj.GetType(), new ReferenceAnalysisAlgorithm.ReflectionPolicy() { GetInstanceProperties = type => { #if UNITY_EDITOR if (type.IsArray) return Enumerable.Empty<PropertyInfo>(); if (!type.IsSubclassOf(typeof(Delegate)) && type.Assembly != typeof(UnityEngine.Vector3).Assembly) return Enumerable.Empty<PropertyInfo>(); return from prop in type.GetProperties(BindingFlags.Public | BindingFlags.Instance) where !prop.PropertyType.ContainsGenericParameters let getter = prop.GetGetMethod() where getter != null && getter.GetParameters().Length == 0 select prop; #else return Enumerable.Empty<PropertyInfo>(); #endif }, }); } var finder = new ReferenceAnalysisAlgorithm.ReferenceFinder(graph) { LogInfo = infoFile.WriteLine, LogError = errFile.WriteLine, }; finder.FindReferences(obj, outputFile.WriteLine); } Cleanup(); }