【发布时间】:2015-10-04 23:57:48
【问题描述】:
我有一个用户输入的字符串。该字符串可能类似于:Button.Minimize 或 Hyperlink.SomeLink
我需要获取字符串的第一部分并将其转换为位于 dll 库中的类。然后我需要将其转换为一种类型。
我在这里看到了无数的例子,但没有一个显示如何将字符串转换为任何类型。我看到的所有示例都是当您事先知道要将字符串转换为哪种类型时。
基本上我需要一个将字符串转换为任何类型的类名的方法。喜欢:按钮、超链接等...
public static void ClickOn(Step step)
{
string[] kvp = step.Element.Split('.');
var type = kvp[0];
var element = kvp[1];
GetType(type);
var path = MainWin.Get<type>(element); //inputted string would be cast in this line where you see <type>
path.Click();
}
public static Type GetType(string typeName)
{
Type get = Type.GetType(typeName, true);
Object type = (Activator.CreateInstance(get));
return type;
}
【问题讨论】:
-
如果您动态创建的类型不共享接口或抽象类,您将如何对待它们?假设您收到 Button 并设法拥有它: Button b = ...;你要对b做什么?如果从方法中返回它,则处理程序将不是 Button 类型。
-
我想我不是很清楚。在我拥有的代码中: var path = MainWin.Get
应该是输入的字符串。 -
是的,我明白了,但是您的 GetType 方法无法编译,因为您声明要返回一个 Type 对象并且您正在返回一个 Object 对象。 Activator.CreateInstance 正在创建您指定类型的对象。 GetTypeMethod 应该返回 Object,但问题是我在第一条评论中描述的,你打算如何处理 Object 类型的对象?您的处理程序路径将是 Object 类型,您没有 Click 方法。
-
阅读我的回答,如果您需要的话,请告诉我。