在C#中将字符串转换为Control Type?

时间:2012-02-26 08:28:09

标签: c# wpf reflection

我有字符串属性并使用此代码填充:

  prop1= MyCustomPanle.GetType().ToString(); 

我使用prop1来保持控件的类型(wpf基本控件和自定义控件)。我保留了这个属性,并希望在这个属性的值上创建类型。像这样:

  Type ControlType=Type.Gettype(prop1); 

但是这个Type.GetType()只适用于int,string等变量类型。

如何将字符串转换为控件类型?

2 个答案:

答案 0 :(得分:2)

您需要将完整的AssemblyQualifiedName传入GetType()

您可以通过在所需类型的现有实例上调用GetType().AssemblyQualifiedName来获取此信息。

e.g。

var myControlTypeName = typeof(MyControl).AssemblyQualifiedName;
var myControlType = Type.GetType(myControlTypeName);
上面的

myControlTypeName最终为:

  

MyNamespace.MyControl,MyProject,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null

但如果你希望它是版本中立的我相信它可以缩短到下面并且仍然可以工作:

  

MyNamespace.MyControl,MyProject

答案 1 :(得分:2)

我认为你正在寻找Activator.CreateInstance,这将根据仅在运行时知道的类型创建一个对象:http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx