【发布时间】:2013-08-18 05:34:54
【问题描述】:
我正在为我的 android 应用程序使用 ORM 系统 (sqlite-net)。我希望能够动态创建我的数据库映射类,并且能够向成员添加属性,这可能吗?我需要动态创建这样的东西:
class ConfigData
{
[PrimaryKey, AutoIncrement]
public int id { get; set; }
[MaxLength(20)]
public string ip { get; set; }
[MaxLength(128)]
public string port { get; set; }
}
提前致谢。
【问题讨论】:
-
参见 stackoverflow.com/questions/646258/… 和 stackoverflow.com/questions/6166236/add-properties-at-runtime 和 stackoverflow.com/questions/1653046/… - StackOverdlow 已经很好地介绍了它
-
这真的取决于将要消耗对象的内容。不同的 API 支持不同的模型。有时你只是有反思;有时你有 ComponentModel;有时您可以使用
dynamic。真的真的取决于谁会消费它。 “仅反射”是“适用于大多数地方”的选项,但需要TypeBuilder之类的内容。另外,虽然:在编译时定义ConfigData有什么问题? -
这里的问题是我试图在不同的表结构之间创建一个小版本转换器。例如,我想知道 ConfigData 版本 10 中的字段 ip 在版本 5 中是如何命名的(因为我需要导出到以前的版本)。我需要这个来将表格版本中的数据提供给下面的另一个版本。这就是为什么我想根据我想要获得的版本动态定义 ConfigData。无论如何,我现在正在考虑使用类/成员属性,看看是否可以以更简单的方式完成此操作。
标签: c#