我有以下课程:
public class Products
{
public int Id { get; set; }
public string ProductName { get; set; }
public int Price { get; set; }
public IList<ProductFiles> ProductFiles { get; set; }
}
public class ProductFiles
{
public int NumberOfFiles { get; set; }
public int NumberOfShops { get; set; }
}
我在这里尝试设置属性NumberOfFiles
(ProductFiles
成员)的值:
public Products CountProductFiles(int productId)
{
DB_utilities db = new DB_utilities();
object[] spParams = new object[] { productId};
Products product = new Products();
using (var reader = db.procSelect("[Products_CountFiles]", spParams))
{
reader.Read();
{
Products _products = new Products
{
ProductName = (string)reader["ProductName"],
Price = (double)reader["Price"],
// I am trying to do something like this but this does not work:
ProductFiles.NumberOfFiles = (int)reader["NumberOfFiles"]
};
Products = _products ;
}
}
return Products;
}
如何设置道具NumberOfFiles
的值?或整个概念是错误的?
答案 0 :(得分:2)
由于ProductFiles
是ProductFiles
的集合,您需要执行此操作
Products p = new Products();
p.ProductFiles = new List<ProductFiles>();
p.ProductFiles.Add(new ProductFiles() { NumberOfFiles = 1 }); // or some other defined value.
在向对象添加对象之前,需要初始化集合。
在您的示例中,您不会将ProductFiles
视为集合,这就是您收到错误的原因。
答案 1 :(得分:1)
集合的要点是它可以包含零个或多个项目。您需要在集合中放置一个实例。您还需要创建一个集合,以确保集合本身不为空。
new Product {
Files = new List<ProductFile>() {
new ProductFile {
FileCount = 42
}
}
}
答案 2 :(得分:0)
在此示例中,Products :: ProductFiles是一个列表
因此,为了设置NumberOfFiles的值,请执行以下操作:
ProductFiles[i].NumberOfFiles = //whatever you want to set it to.
但是,在完成所有这些之前,不要忘记实例化List变量。否则,它本身就是NULL。