随便写点代码,发现了这个问题。。。
因为一开始使用的Assembly.Load.CreateInstance是无法加参数的。。。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Configuration;
namespace DecorationClass
{
class Player
{
public Player(string Name)
{
this._Name = Name;
Console.WriteLine("1");
}
private readonly string _Name;
public string Name
{
get { return _Name; }
}
}
class Program
{
static void Main(string[] args)
{
Player player1;
string ClassName = ConfigurationManager.AppSettings["Player1"];
string Name = ConfigurationManager.AppSettings["Player1Name"];
//***************************************************************
Assembly asm = Assembly.GetExecutingAssembly();
object[] ObjArray = new object[1];
ObjArray[0] = Name;
player1 = (Player)asm.CreateInstance("DecorationClass." + ClassName, true, BindingFlags.Default, null, ObjArray, null, null);
}
}
}
从注释的下面那行开始就是
现在才发现object是所有类的基类是多么的重要。。。
这里面的传参是通过一个一个object数组进行传递的,也就是ObjArray,所有的类型都可以,但是顺序一定要按照构造函数的顺序来存!