0

您好我想将字符串值转换为 DataType 以便我可以使用它。首先,我想描述一下我的问题。

1:我键入了名为文件
的数据集 2:此数据集包含6 个数据
表 3:数据表名称为(File01File02File03File04File05File06
4: 现在我想动态检查要调用哪个 DataTable 并创建实例该类使用Reflection

string dataTableName = filename + "DataTable"; //This will generate File01DataTable,File02DataTable...,File06DataTable
Type dataTableType = typeof ( Files.File01DataTable ).Assembly.GetType( dataTableName );

5:现在创建该 DataTable 的实例。这里 tDS 是 TypedDataSet Files 实例

dataTableType dt = ( dataTableType )tDS.Tables[filename];

6:但上述方法不起作用。当我尝试返回类型时,它返回 null 而不是那个类。有人可以指导我吗?
提前致谢

编辑: 谢谢罗尼因为你解决了我 50% 的问题。现在,当我在这里输入类型是实例化对象的另一种情况。

string dataTableName = filename + "DataTable";// It Generate File01DataTable and so on till File06DataTable.

现在,当我想在运行时实例化对象时,我无法告诉它

File01DataTable dt = (File01DataTable) tDS.Table[filename];

相反,我需要通用对象,它应该在运行时决定实例化哪个对象,例如 File02DataTable 或 File05DataTable。那么我该如何克服这个问题呢?

4

1 回答 1

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);
        }
    }
}
于 2013-05-29T09:52:17.347 回答