我有一个像这样的字符串:
typeStr = label1.GetType().ToString();
现在我想通过type
反向获取此控件的typeStr
。
我尝试了Type.GetType(typeStr)
之类的功能,但没有帮助。
有没有简单的方法来获取type
?
答案 0 :(得分:1)
您可以传递Type
全名
Type type = Type.GetType("System.Windows.Forms.Label");
这将创建类型并创建对象的实例,您可以使用Activator.CreateInstance
object obj = Activator.CreateInstance(type);
Type
AppDomain.CurrentDomain.GetAssemblies()
private void btnAddDymanicLabel_Click(object sender, EventArgs e)
{
Type type = GetTypeNameFromDomain("System.Windows.Forms.Label");
Label lbl = (Label) Activator.CreateInstance(type);
this.Controls.Add(lbl);
lbl.Text = "dynamic created control";
}
private Type GetTypeNameFromDomain(string typename)
{
return AppDomain.CurrentDomain.GetAssemblies().SelectMany(assembly => assembly.GetTypes().Where(type => type.FullName == typename)).FirstOrDefault();
}
一个简单的例子:
static void Main(string[] args)
{
Type type = Type.GetType("System.Int32");
object obj = Activator.CreateInstance(type);
int num = (int) obj;
num = 10;
Console.WriteLine(num); // prints : 10
}
答案 1 :(得分:0)
尝试使用
获取名称typeStr = label1.GetType().GetFullName();
然后
type = Type.GetType(typeStr);
答案 2 :(得分:0)
你的意思是你只想从这样的字符串中获取该类型的实例
classname instance = Activator.CreateInstance("<assemblyname>","<classname>") as classname;