繁体   English   中英

将字符串值转换为用户定义的类型

[英]Convert String Value to User Defined Type

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

1:我已键入数据集命名文件
2:此数据集包含6个数据表
3:DataTables名称是( 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文件实例

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。 那么我该如何克服这个问题呢?

您的班级是否嵌套? 如果是这样,您将需要在类之间添加'+'字符。 另外,需要一个完全引用的名称空间来返回类型。

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);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM