【发布时间】:2016-04-25 11:38:46
【问题描述】:
有没有办法在运行时通过转换类型名称的字符串来指定类型?我希望下面的非编译代码可以解释我想要做什么。否则请告诉我,我会尝试更好地解释它。
var valueFromDropDownMenu = "MyClass";
List<Type.GetType(valueFromDropDownMenu)> dynamicList =
new List<Type.GetType(valueFromDropDownMenu) > ();
// Code to iterate through objects and populate dynamicList
// with all objects of correct type
我想做的是让用户选择我要处理的对象类型。
我正在使用 Unity3D,它是一个游戏开发框架,它使用静态方法从文件加载资源。这些资源需要投。
我正在尝试制作一个开发人员工具,让开发人员可以选择要加载的特定类型的资源。所以我需要做类似的事情
var files = LoadAll("Path, ofType(UserSelectedType));
有可能吗?
【问题讨论】:
-
看看here,这应该能回答你的问题。
-
我知道这并不能回答您的问题,但是您是否有可能创建一个所有这些类型都可以实现的接口,即无论它实际得到什么类型,您是否都想做相同的操作?
-
List<Type.GetType(...)>不起作用 - 但您可能不需要它。我假设您已经有了要搜索的项目列表?如果是这样,为什么不使用相同的类型 - 因为所有找到的对象都将属于该类型或子类型? -
真的吗?我认为他从菜单中获取类名,并希望从这些字符串中创建新对象。 (
valueFromDropDownMenu毕竟是一个字符串!)如果他已经有对象,他可以尝试克隆它们.. -
@BarryO'Kane 它不能解决我的问题,因为当我尝试投射某些东西时,我可以使用 Type 类型。像这样 dosnt 工作: Type myType = GetType(namespaceQualifiedTypeName); myType instance = new myType();