C# 是指在初始化过程中正在初始化的对象吗?
我有一个对象DataParameterInfo(DPI)和两个委托方法,用于将数据从DataReader移动到POCO或从POCO中获取值 例如:C# 是指在初始化过程中正在初始化的对象吗?,c#,syntax,initialization,C#,Syntax,Initialization,我有一个对象DataParameterInfo(DPI)和两个委托方法,用于将数据从DataReader移动到POCO或从POCO中获取值 例如: new DataParameterInfo<IBulletinPCN> { FieldName = "ChangeProcedure", ParameterName = "@ChangeProcedure", EntityName = "ChangeProcedure", DataType = SqlDbT
new DataParameterInfo<IBulletinPCN>
{
FieldName = "ChangeProcedure",
ParameterName = "@ChangeProcedure",
EntityName = "ChangeProcedure",
DataType = SqlDbType.NVarChar,
FieldType = FieldType.Other,
PopulateEntity = (dr, e) => e.ChangeProcedure = dr.IsDBNull(dr.GetOrdinal("ChangeProcedure")) ? null : dr.GetString(dr.GetOrdinal("ChangeProcedure")),
ReadEntity = e => e.ChangeProcedure
}
或许
PopulateEntity = (dr, e) => e.ChangeProcedure = dr.IsDBNull(dr.GetOrdinal(this.FieldName)) ? null : dr.GetString(dr.GetOrdinal(this.FieldName)),
当我尝试时,只有“this”指的是创建DPI的类,而不是DPI本身
我能做我想做的吗,如上所述,如果是,如何做?您不能用该类的对象初始值设定项引用该类的另一个成员-这将导致循环引用
您只需在初始值设定项之后分配
populatentity
属性即可解决此问题。var x=new Foo{property=bar}只是执行旧var x=new Foo()的一种简单方法;x、 属性=条
在这种情况下,您只需采用旧式方法,引用以前设置的属性值没有问题。您可以通过更改代理的调用方将字段名作为参数传递给代理:
例:
在执行该委托时,您会说:
PopulateEntity(dr, e, this.fieldname);
嗯,好的,我看得出来。DPI是作为静态属性中列表的一部分创建的,但是我可以修改它,使属性由方法填充,然后在。。。但是,如果我不手动编写每一个实体属性,那么访问实体属性就会变得很棘手,我会尽量减少整个过程的手动性。。。不过,这是一个很好的线索。我不知道我怎么会错过这个机会。谢谢
PopulateEntity = (dr, e, fieldname) => e.ChangeProcedure = dr.IsDBNull(dr.GetOrdinal(fieldname)) ? null : dr.GetString(dr.GetOrdinal(fieldname))
PopulateEntity(dr, e, this.fieldname);