2010-07-20 110 views
5

我有一个客户端可以导入excel文件,csv或制表符分隔文件的项目。这个文件被加载到我转换成SQLite数据库表的数据表中。我真的更喜欢使用强类型对象与数据表,所以有什么方法可以轻松地使用反射将创建的数据库表转换为强类型类? kicker是导入到应用程序中的文件总是不同的(即不同的列),所以我不能真正硬编码任何强类型的对象,它们总是必须随时生成。从数据表或数据库表生成类

回答

0

Ryan已经提出了正确的问题,并且我也只能认为强类型类的唯一好处是在设计或编译时,而不是在运行时。

也许你想在创建SQLlite表后在使用此表的另一个应用程序中构建一些强类型类。

在这种情况下,您可以查看T4 - Text Template Transformation Toolkit,因为它可以从查询中创建强类型类,以便您可以在编译时将这些类用于其他应用程序。

但是在你开始使用它之前,你应该知道T4是best kept Visual Studio secret之一。 ;-)

4

从理论上讲,你可以使用类似Reflection.Emit的创建程序集,或即使通过生成代码文件并调用编译器将其构建到程序集中。

但是,我不知道这将如何有用。假设这些表的模式是在运行时确定的,那么这些生成的类的任何用法都将无法使用这些在不使用反射的情况下添加的强类型属性,并且此时您基本上正在处理反射的附加性能打击有点弱。 C#4.0中的动态类型可能会消除性能影响,但是您仍然增加了很多复杂性,而没有真正的好处。