如何在运行时向现有类添加新属性,独立于 C# 中具有读写功能的现有成员
我需要为数据库表中的每一列创建一个属性,但我们事先不知道列数。 主要是为了可重用性。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我需要为数据库表中的每一列创建一个属性,但我们事先不知道列数。 主要是为了可重用性。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
使用字典或哈希表 而是
Use a Dictionary or Hashtable rather
我不明白这是如何使用(或可能)的,因为属性在设计时更有用,因此您可以轻松找到并使用它们。
如果您能够在运行时创建它们,您如何期望编码器知道属性将存在?编译器甚至看不到属性的名称。
即使此时使用反射,您仍然需要以文本方式指定属性的名称。
因此,使用
DataTable
表示相应的数据库表是给您带来运行时动态感觉的一种方法。另一种方法是对每行使用带有
Dictionary
的键值对方法,并将它们全部存储在HashSet
或List
中,具体取决于在解决方案的其余部分上,代表一个表。I don't see how that's usable (or possible), because properties are more useful at design-time, so you can easily find and use them.
If you were able to create them at runtime, how do you expect the coder to know a property will exist? The compiler won't even see the name of the property.
Even if you use reflection at that point, you still need to specify the name of the property textually.
Hence, using a
DataTable
to represent the corresponding database table is one way to give you that feeling of run-time dynamics.Another way is to use the key-value pair approach with
Dictionary
for each row, and store them all in aHashSet
or aList
, depending on the rest of your solution, to represent a table.