「Gang of Four」のデザイン パターンと同様の構造を実装しようとしています。しかし、私はその点で立ち往生しています。以下が本題です。
public class Product
{
public Product()
{
Category=new Category();
}
public Product(int productId, string productName, string weight, double unitPrice, int unitsInStock)
: this()
{
ProductId = productId;
ProductName = productName;
Weight = weight;
UnitPrice = unitPrice;
UnitsInStock = unitsInStock;
}
public int ProductId { get; set; }
public string ProductName { get; set; }
public string Weight { get; set; }
public double UnitPrice { get; set; }
public int UnitsInStock { get; set; }
public Category Category { get; set; }
}
public class Category :
{
public Category()
{
}
public Category(int categoryId, string name, string description)
: this()
{
CategoryId = categoryId;
Name = name;
Description = description;
}
public int CategoryId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
以下の方法で製品のリストを取得します。
public List<Product> GetProduct()
{
string sql =
@"SELECT ProductId, ProductName, Weight, UnitPrice, UnitsInStock,CategoryId,
FROM [Product]
return Db.ReadList(sql, Make);
}
private static Func<IDataReader, Product> Make = reader =>
new Product
{
ProductId = reader["ProductId"].AsId(),
ProductName = reader["ProductName"].AsString(),
Weight = reader["Weight"].AsString(),
UnitPrice = reader["UnitPrice"].AsDouble(),
UnitsInStock = reader["UnitsInStock"].AsInt(),
Category.CategoryId=reader["CategoryId].AsInt()
};
しかし、以下を書くとエラーが発生します。
Category.CategoryId=reader["CategoryId].AsInt()
リスト内の製品の CategoryId を取得する方法は?