匿名对象类型

本文关键字:类型 对象 | 更新日期: 2023-09-27 18:23:54

我在C#中有两个函数:

function A (){
   var arrDataList = new[] { new { dlName = dlFashion, idCate = 1 }, new { dlName = dlSport, idCate = 2 }, new { dlName = dlElec, idCate = 3 } };
   B(arrDataList);
}
function B(Array a){
   var arrDataList = a;
   foreach (var item in arrDataList)
        {
            item.dlName.DataSource = new ServiceReference1.Service1Client().GetProductBestSeller(item.idCate); // throw error
            item.dlName.DataBind(); // throw error
        }
}

如何使用函数B请参阅函数A中的arrDataList。

匿名对象类型

由于匿名对象仅从object继承,因此无法维护类型信息。但是,您可以使用dynamic:

void B(dynamic[] a){
   var arrDataList = a;
   foreach (var item in arrDataList)
   {
       item.dlName.DataSource = new ServiceReference1.Service1Client().GetProductBestSeller(item.idCate); // throw error
       item.dlName.DataBind(); // throw error
   }
}

但是,没有编译时类型检查,因此如果数组中的对象没有实现属性,则只会在运行时注意到它。强烈建议不要采用这种方法。您最好创建实际的类型和期望这些类型的方法。