Ejemplo n.º 1
0
        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]);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 public void IsDynamicClassTest(Type type, bool isDynamic)
 {
     Assert.Equal(DynamicClassInfo.IsDynamicClass(type), isDynamic);
 }