using System; using System.Reflection; using System.Linq; class InspectGeViSDK { static void Main() { Console.WriteLine("==========================================="); Console.WriteLine("GeViSoft SDK .NET API Inspector"); Console.WriteLine("==========================================="); Console.WriteLine(); // Load the assembly string dllPath = @"C:\GEVISOFT\GeViProcAPINET_4_0.dll"; Assembly assembly = Assembly.LoadFrom(dllPath); Console.WriteLine($"Loaded: {assembly.FullName}"); Console.WriteLine(); // Get all public types var types = assembly.GetTypes() .Where(t => t.IsPublic) .OrderBy(t => t.FullName); Console.WriteLine($"Found {types.Count()} public types"); Console.WriteLine(); // Focus on GeViDatabase class var geviDatabaseType = types.FirstOrDefault(t => t.Name == "GeViDatabase"); if (geviDatabaseType != null) { Console.WriteLine("==========================================="); Console.WriteLine("GeViDatabase Class Methods"); Console.WriteLine("==========================================="); Console.WriteLine(); var methods = geviDatabaseType.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly) .Where(m => !m.IsSpecialName) // Exclude property getters/setters .OrderBy(m => m.Name); foreach (var method in methods) { var parameters = method.GetParameters(); var paramString = string.Join(", ", parameters.Select(p => $"{p.ParameterType.Name} {p.Name}")); Console.WriteLine($"{method.ReturnType.Name} {method.Name}({paramString})"); } Console.WriteLine(); Console.WriteLine($"Total methods: {methods.Count()}"); Console.WriteLine(); } // Look for Setup-related types Console.WriteLine("==========================================="); Console.WriteLine("Setup-Related Types"); Console.WriteLine("==========================================="); Console.WriteLine(); var setupTypes = types.Where(t => t.Name.Contains("Setup") || t.Name.Contains("Alarm") || t.Name.Contains("Config") || t.Name.Contains("Enumerate")); foreach (var type in setupTypes) { Console.WriteLine($"- {type.FullName}"); if (type.IsClass && !type.IsAbstract) { var setupMethods = type.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly) .Where(m => !m.IsSpecialName) .Take(5); foreach (var method in setupMethods) { Console.WriteLine($" {method.Name}()"); } } } Console.WriteLine(); Console.WriteLine("==========================================="); Console.WriteLine("Inspection Complete"); Console.WriteLine("==========================================="); } }