C#中是否有基于字符串转换对象的方法?
实施例,
String typeToCast = control.GetType().Name;
Button b = (typeToCast)control;
答案 0 :(得分:7)
是的,你可以,但不应该。
Csharp的
string value = "2.5";
object typedObject;
typedObject = Convert.ChangeType(value, Type.GetType("System.Double"));
Vbnet
Dim value As String = "2.5"
Dim typedObject As Object
typedObject = Convert.ChangeType(value, Type.GetType("System.Double"))
答案 1 :(得分:3)
不,你不能这样做。此外,你会实现什么,因为你必须将它分配给“静态”类型,在你的情况下,它是按钮 - 所以为什么不正常投射:
Button b = (Button)control;
你可以嘘声,检查你的控件是否是一种类型:
Type t = TypeFromString(name);
bool isInstanceOf = t.IsInstanceOfType(control);
编辑: 要在编译时不创建对象来创建对象,可以使用Activator类:
object obj = Activator.CreateInstance(TypeFromString(name));
Button button = (Button)obj; //Cast to compile-time known type.