用反射就可以了。下面是一个例子:
using
System;
using System.Reflection;
class People
... {
public string Name;
public int Age;
public People()
...{
Name = "Unknow Person";
Age = -1;
}
public override string ToString()
...{
return string.Format("Name:{0}, Age:{1}", Name, Age);
}
public void CallConstructor()
...{
ConstructorInfo constructor = this.GetType().GetConstructor(
BindingFlags.Instance | BindingFlags.Public,
null,
new Type[0],
null
);
constructor.Invoke(this, null);
}
}
class Program
... {
static void Main(string[] args)
...{
People p = new People();
p.Age = 100;
p.Name = "Old man";
Console.WriteLine(p);
p.CallConstructor();
Console.WriteLine(p);
}
}
using System.Reflection;
class People
... {
public string Name;
public int Age;
public People()
...{
Name = "Unknow Person";
Age = -1;
}
public override string ToString()
...{
return string.Format("Name:{0}, Age:{1}", Name, Age);
}
public void CallConstructor()
...{
ConstructorInfo constructor = this.GetType().GetConstructor(
BindingFlags.Instance | BindingFlags.Public,
null,
new Type[0],
null
);
constructor.Invoke(this, null);
}
}
class Program
... {
static void Main(string[] args)
...{
People p = new People();
p.Age = 100;
p.Name = "Old man";
Console.WriteLine(p);
p.CallConstructor();
Console.WriteLine(p);
}
}
只是要注意,反射性能比较差。
技术讨论的QQ群: 2514097 或 10987609