C#如何根据字符串动态的创建对象(类)?
using System;
using System.Collections.Generic;using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Base1 base1 = new Base1();
Derived1 derived = new Derived1();
base1.printMethod();
derived.printMethod();
base1 = new Derived1();
base1.printMethod();
base1.newClass("Derived1").TimerEvent(3);
base1.newClass("Derived2").TimerEvent(5);
Console.ReadLine();
}
}
class Base1
{
public virtual void printMethod()
{
Console.WriteLine("base1");
}
public IWeb newClass(string strClassName)
{
IWeb b;
object o = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("ConsoleApplication1." + strClassName, false);
b = (IWeb)o;
return b;
}
}
class Derived1 : Base1, IWeb
{
public override void printMethod()
{
Console.WriteLine("derived1");
DocumentCompleted(1);
TimerEvent(1);
}
public int DocumentCompleted(int i)
{
int nRet = 0;
Console.WriteLine("derived1 DocumentCompleted");
return nRet;
}
public int TimerEvent(int i)
{
int nRet = 0;
Console.WriteLine("derived1 TimerEvent i=" + i.ToString());
return nRet;
}
}
class Derived2 : Base1, IWeb
{
public override void printMethod()
{
Console.WriteLine("derived2");
DocumentCompleted(1);
TimerEvent(1);
}
public int DocumentCompleted(int i)
{
int nRet = 0;
Console.WriteLine("derived2 DocumentCompleted");
return nRet;
}
public int TimerEvent(int i)
{
int nRet = 0;
Console.WriteLine("derived2 TimerEvent i="+i.ToString());
return nRet;
}
}
interface IWeb
{
int DocumentCompleted(int i);
int TimerEvent(int i);
}
}
参考链接:
http://blog.csdn.net/wlanye/article/details/7045625
输出结果
base1
derived1
derived1 DocumentCompleted
derived1 TimerEvent i=1
derived1
derived1 DocumentCompleted
derived1 TimerEvent i=1
derived1 TimerEvent i=3
derived2 TimerEvent i=5