IDictionary是鍵/值對的泛型集合的基接口,每個元素都是存在keyValuepair對象中的鍵值對。
每一對都必須有唯一的鍵。實現在是否允許 key 為 空引用(在 Visual Basic 中為 Nothing) 方面有所不同。此值可以為 空引用(在 Visual Basic 中為 Nothing),並且不必是唯一的。IDictionary 接口允許對所包含的鍵和值進行枚舉,但這並不意味著任何特定的排序順序。
C# 語言中的 foreach 語句(在 Visual Basic 中為 For Each,在 C++ 中為 for each)需要集合中每個元素的類型。由於 IDictionary 的每個元素都是一個鍵/值對,因此元素類型既不是鍵的類型,也不是值的類型。而是 KeyValuePair 類型。
以下是一個簡單的示例程序
實體類:
namespace Domain
{
//訂單
public class Order
{
public int OrderID { get; set; }
/// <summary>
/// 訂單日期
/// </summary>
public DateTime OrderDate { get; set; }
/// <summary>
/// 訂單地址
/// </summary>
public string OrderAdress { get; set; }
/// <summary>
/// 訂單電話
/// </summary>
public string OrderTel { get; set; }
}
}
//訂單明細
namespace Domain
{
public class OrderDetail
{
public int DetailID { get; set; }
public int ProductID { get; set; }
/// <summary>
/// 數量
/// </summary>
public decimal Quantity { get; set; }
/// <summary>
/// 單價
/// </summary>
public decimal Price { get; set; }
}
}
//存放數據
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain;
namespace Service
{
public static class OrderStock
{
private static IList<Order> m_orderList = new List<Order>(); //定義了一個List的泛型字段
public static IList<Order> OrderList//定義了一個List的泛型屬性
{
get
{
return m_orderList;
}
set
{
m_orderList = value;
}
}
private static IDictionary<Order, IList<OrderDetail>> m_orders = new Dictionary<Order, IList<OrderDetail>>();
//定義了一個Dictionary的泛型字段,
public static IDictionary<Order, IList<OrderDetail>> Orders/定義了一個Dictionary的泛型屬性
{
get
{
return m_orders;
}
set
{
m_orders = value;
}
}
}
}
服務接口
using System;
using Domain;
namespace Service
{
public interface IOrderService
{
//刪除
void Delete(Domain.Order entity);
//查詢所有
System.Collections.Generic.IList<Domain.Order> LoadAll();
//保存
object Save(Domain.Order entity);
//更新
void Update(Domain.Order entity);
//根據ID查詢
Order Get(object id);
//獲取下一個ID
object GetNextID();
}
namespace Service
{
public interface IOrderDetailService
{
void Delete(System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> entity);
System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> Get(object id);
object GetNextDetailID(object mainID);
object GetNextID();
System.Collections.Generic.IDictionary<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> LoadAll();
object Save(Domain.Order entity, System.Collections.Generic.IList<Domain.OrderDetail> detail);
void Update(System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> entity);
}
}
服務實現
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain;
namespace Service