您好我想将字符串值转换为DataType,以便我可以使用它。首先,我想描述一下我的问题。
1:我的Typed DataSet命名为文件
2:此DataSet包含 6 DataTables
3:DataTables名称为( File01 , File02 , File03 , File04 , File05 , File06 )
4:现在我想动态检查哪个DataTable要调用,并使用反射创建该类的实例。
string dataTableName = filename + "DataTable"; //This will generate File01DataTable,File02DataTable...,File06DataTable
Type dataTableType = typeof ( Files.File01DataTable ).Assembly.GetType( dataTableName );
5:现在创建该DataTable的实例。这里tDS是TypedDataSet文件实例
dataTableType dt = ( dataTableType )tDS.Tables[filename];
6:但上面的approch不起作用。当我尝试返回类型时,它返回null而不是该类。请有人指导我。
提前致谢
修改
非常感谢ronnie因为你解决了我50%的问题。现在当我在这里获得类型是实例化对象的另一种情况。
string dataTableName = filename + "DataTable";// It Generate File01DataTable and so on till File06DataTable.
现在,当我想在运行时实例化对象时,我无法告诉它
File01DataTable dt = (File01DataTable) tDS.Table[filename];
相反,我需要通用对象,它应该在运行时决定哪个对象实例化,例如File02DataTable或File05DataTable。那么我怎样才能克服这个问题?
答案 0 :(得分:1)
您的班级是否已嵌套?如果是这样,您将需要在类之间添加“+”字符。此外,还需要一个完全引用的命名空间来返回类型。
namespace SO
{
class Program
{
static void Main(string[] args)
{
string dataTableName = "SO.Files+File01DataTable";
Type dataTableType = typeof(Files.File01DataTable).Assembly.GetType(dataTableName);
Files.File01DataTable dt = (Files.File01DataTable)Activator.CreateInstance(dataTableType);
}
}
}