【发布时间】:2014-06-30 19:56:42
【问题描述】:
试图通过将 oracle 数据库中的字段映射到对象的属性来创建数据访问组件。我创建了一个基础对象,它接受一个类型并像这样调用......
public class Document : DataProviderBase<DataObjects.Document>
{
// code goes here...
}
此基础对象有一个名为 AddMapping 的方法,它将数据库字段映射到这样的属性...
this.AddMapping<int>("ATD_KEY", "Key")
在这种情况下...
-
int是属性类型 -
ATD_KEY是数据库中的字段名 -
Key是DataObjects.Document上的属性名称
代码使用...
typeof(<TParent>).GetProperty(<property name>)
..获取PropertyInfo,用于获取和设置属性。
虽然这很好,但我想在 AddMapping 方法中添加一些类型安全和 lambda 表达式。我想做类似以下的事情......
this.AddMapping<int>("ATD_KEY", o => o.Key)
..其中o 是DataProviderBase 提供的类型。这将确保Key 属性实际上是int 类型,并确保字符串"Key" 不会拼写错误或大小写错误,因为第一个AddMapping 方法中显示的当前工作代码存在问题。
这可能吗?如果是这样怎么办?
我找到的最接近的例子是这个 Dynamic Expression from the Property of the object of the class,但是这仍然是通过字符串而不是表达式来引用属性。
【问题讨论】:
-
有点不清楚您要实现什么目标:您能否澄清您的问题以及预期解决方案的任何实际优点?谢谢和问候,
-
这里的目的是打字安全。前一种方法中的属性名称总是拼写错误并导致错误。这有帮助吗?