如何避免冗长的陈述

格雷格·古姆

我有一个实体(Entity Framework 6),该实体映射到具有100列的表,这些列名为col_1,col_2等。该表是现有的旧表,用于连接到另一个系统,因此它非常通用,并且永远不会更改。

因此,该实体具有100个映射到这些列的属性。

public class DataEntity{ 

public string Column1{get;set;}    

...
}

然后,我得到了这样的数据:

var columnNumber = 1;
var data = "The data";

如何在没有大写字母的情况下将col_1设置为“数据”?

var dataEntity = new DataEntity();

这是我不想做的:

switch(columnNumber)
{
    case 1:
    dataEntity.Column1 = data;
    break;
}

注意,不可能更改实体的结构。

伊恩·P

如果您绝对不能更改数据的结构并且不想使用switch语句-我可能会研究策略模式的一些实现:

http://www.dofactory.com/net/strategy-design-pattern

如果您不想走这条路,则可以使用反射通过遵循以下约定来设置实体的值:在该约定中,列将始终被命名为“ col_1”,依此类推,但这非常脆弱。

var myEntity = new MyEntity();
var value = "The data";
var columnNumber = 1;

PropertyInfo propertyInfo = MyEntity.GetType().GetProperty(string.Format("Col_{0}", columnNumber));
propertyInfo.SetValue(myEntity, Convert.ChangeType(value, propertyInfo.PropertyType), null);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章