设置ilist <t>成员的值</t>

时间:2013-12-10 12:50:34

标签: c#

我有以下课程:

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; }
}

我在这里尝试设置属性NumberOfFilesProductFiles成员)的值:

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的值?或整个概念是错误的?

3 个答案:

答案 0 :(得分:2)

由于ProductFilesProductFiles的集合,您需要执行此操作

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。