我正在创建一个这样的设置类:
class Setting<T> {...}
我将所有设置存储在树中,如下所示:
class SettingsNode {
public Setting<> setting;
public Setting<> child;
public Setting<> sibling;
}
这显然不能编译,因为<>
. 我可以有多种类型(Setting<int>
、、Setting<string>
等),所以我不知道如何创建 SettingsNode。
所以我把它改成:
class SettingsNode {
public object setting;
public object child;
public object sibling;
}
但是在转换为正确的类型时遇到了麻烦:
// Create a setting from a type name as text
SettingsNode tmp = new SettingsNode();
Type genericType = typeof(Setting<>);
Type[] typeArgs = { Type.GetType("System.Int32") };
Type cType = genericType.MakeGenericType(typeArgs);
tmp.setting = Activator.CreateInstance(cType);
// Here's where I have a problem
Type baseType = typeArgs[0];
((Setting<baseType>)(tmp.setting)).SomeFunction();
最后一行的错误是:
找不到类型或命名空间名称“baseType”(您是否缺少 using 指令或程序集引用?)
我怎样才能做到这一点?谢谢!