public static DynamicClassInfo GetClassReference(string assemblyName, string className) { if (ClassReferences.ContainsKey(assemblyName) == false) { Assembly assembly; if (AssemblyReferences.ContainsKey(assemblyName) == false) { AssemblyReferences.Add(assemblyName, assembly = Assembly.LoadFrom(assemblyName)); } else { assembly = (Assembly)AssemblyReferences[assemblyName]; } foreach (Type type in assembly.GetTypes()) { if (type.IsClass) { if (type.FullName.EndsWith("." + className)) { var ci = new DynamicClassInfo(type, Activator.CreateInstance(type)); ClassReferences.Add(assemblyName, ci); return(ci); } } } throw (new Exception("Could not instantiate class")); } return((DynamicClassInfo)ClassReferences[assemblyName]); }
public static object InvokeMethod(DynamicClassInfo ci, string methodName, object[] args) { var result = ci.type.InvokeMember(methodName, BindingFlags.Default | BindingFlags.InvokeMethod, null, ci.classObject, args); return(result); }
public void IsDynamicClassTest(Type type, bool isDynamic) { Assert.Equal(DynamicClassInfo.IsDynamicClass(type), isDynamic); }