通过类名字符串调用类成员和实例化

using System;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Reflection;
using System.Configuration;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //在App.Config中读取类的定义字符串
            string ClassDefined = ConfigurationManager.AppSettings["ClassDefined"];
            //创建代码编译器
            CSharpCodeProvider codeProvider = new CSharpCodeProvider();
            //设置编译参数   
            CompilerParameters paras = new CompilerParameters();
            //设置在内存中生成输出。
            paras.GenerateInMemory = true;
            //编译代码  
            CompilerResults result = codeProvider.CompileAssemblyFromSource(paras, ClassDefined);
            //获取编译后的程序集
            Assembly assembly = result.CompiledAssembly;
            //获取反射出来的对象
            Object dynamicClass = assembly.CreateInstance("CSharp.Dynamic.Employee");
            //获取员工实例的类型
            Type employee = dynamicClass.GetType();
            //设置属性
            employee.GetProperty("ID").SetValue(dynamicClass, 1, null);
            employee.GetProperty("Name").SetValue(dynamicClass, "李林峰", null);
            employee.GetProperty("Department").SetValue(dynamicClass, "技术部", null);
            employee.GetProperty("Position").SetValue(dynamicClass, "程序员", null);
            //读取属性
            string Name = employee.GetProperty("Name").GetValue(dynamicClass, null).ToString();
            string Department = employee.GetProperty("Department").GetValue(dynamicClass, null).ToString();
            string Position = employee.GetProperty("Position").GetValue(dynamicClass, null).ToString();
            //执行方法
            string ParmAndID = employee.GetMethod("Method").Invoke(dynamicClass, new object[] { "员工编号:" }).ToString();
            //输出
            Console.WriteLine(Name);
            Console.WriteLine(Department);
            Console.WriteLine(Position);
            Console.WriteLine(ParmAndID);
            Console.Read();
        }
    }

  
}
<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="ClassDefined" value="namespace CSharp.Dynamic{
                                   public class Employee{
                                      public int ID { get; set; } 
                                      public string Name { get; set; }
                                      public string Department { get; set; }
                                      public string Position { get; set; }
                                      public string Method(string parm){return parm+this.ID.ToString();}
                                   }}"/>
  </appSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
原文地址:https://www.cnblogs.com/hongjiumu/p/2651214.html