【问题标题】:Dynamic Field Name in dynamic type in ASP.NET MVCASP.NET MVC 中动态类型的动态字段名称
【发布时间】:2013-11-04 16:11:07
【问题描述】:

我正在使用实体框架,我的表结构如下。

密钥,dec2000,dec2001,dec2002,... dec2020

所以,while update in loop if 对于我中的所有列,我必须指定列名,例如,

for (int j = 0; j < intEndYear - intStartYear; j++)
{
  // Find value from FormCollection
  // Assign it to object
  OBJECT.DEC2000 = 1;
}

所以,一种方法是我必须检查年份并进行条件检查是否 year = 2000 然后使用 dec2000 字段等等。

所以我尝试使用动态类型,所以我可以动态指定字段名称

dynamic objLevel = objDetailSum.GetSingle(parameters);

所以,在更新时我正在尝试这样做

// trying to make field name
string stryear = "DEC" + year.ToString(); 
objLevel.stryear = 1; // should read objLevel.dec2000 = 1;

我知道这行不通,因为我的表中没有 strYear 列。

问题:有没有其他好的方法来处理这种情况?所以我不必检查每一列,而是可以使用动态/。

欣赏任何方向。

【问题讨论】:

    标签: entity-framework c#-4.0


    【解决方案1】:

    您可以使用Reflection。请参阅here 了解更多信息

    //assuming "myInstance" is an instance of the EF class:
    string strYear = "DEC"+year.ToString();
    var pi =myInstance.GetType().GetProperty(styYear);
    if (pi!=null)
    {
      pi.SetValue(MyInstance,1);
    }
    

    【讨论】:

    • 啊,我完全错过了反射部分。感谢它完美地工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2017-01-04
    • 2020-08-02
    • 2013-11-14
    • 1970-01-01
    相关资源
    最近更新 更多