using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
namespace LoadClassInfo
{
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += CurrentDomain_ReflectionOnlyAssemblyResolve;
Assembly.ReflectionOnlyLoadFrom(@"C:\Program Files (x86)\Uniconta\Uniconta.Common.dll");
Assembly assembly = Assembly.ReflectionOnlyLoadFrom(@"C:\Program Files (x86)\Uniconta\Uniconta.WindowsAPI.dll");
var types = new List<Type>();
Type t;
t = assembly.GetType("Uniconta.ClientTools.DataModel.DebtorOfferClient");
if (t != null)
types.Add(t);
t = assembly.GetType("Uniconta.ClientTools.DataModel.DebtorOfferLineClient");
if (t != null)
types.Add(t);
t = assembly.GetType("Uniconta.ClientTools.DataModel.DebtorOrderClient");
if (t != null)
types.Add(t);
t = assembly.GetType("Uniconta.ClientTools.DataModel.DebtorOrderLineClient");
if (t != null)
types.Add(t);
var sb = new StringBuilder();
foreach (var type in types)
{
var publicProps = type.GetProperties(BindingFlags.Instance | BindingFlags.Public);
sb.AppendLine($"public class {type.Name}");
sb.AppendLine("{");
foreach (var prop in publicProps)
{
var propType = prop.PropertyType;
var propTypeName = prop.PropertyType.Name;
if (propType.GenericTypeArguments.Length > 0) {
propTypeName = $"{prop.PropertyType.Name}<{string.Join(",", propType.GenericTypeArguments.Select(gt => gt.Name))}>";
}
propTypeName = propTypeName.Replace("`1", "");
sb.AppendLine($" public {propTypeName} {prop.Name};");
}
sb.AppendLine("}");
}
Console.WriteLine(sb.ToString());
}
static Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args)
{
try
{
return Assembly.ReflectionOnlyLoad(args.Name);
}
catch (FileNotFoundException)
{
try
{
var path = Path.GetDirectoryName(args.RequestingAssembly.Location);
path = Path.Combine(path, args.Name);
return Assembly.ReflectionOnlyLoadFrom(path);
}
catch (Exception) { }
}
catch (Exception) { }
return null;
}
}
}
362400cookie-checkDotNet core Reflection load assembly