|
|
Közzétéve 2015. 04. 10. 17:22:50
|
|
|

Az IDictionary egy általános kulcs/értékpár alapinterfésze, amelyek mindegyike kulcs-érték pár a keyValuePair objektumban.
Minden párnak egyedi kulcsa kell, hogy legyen. A megvalósítás eltér abban, hogy a kulcs üres referenciaként maradjon (Nothing a Visual Basic-ben). Ez az érték lehet üres referencia (Nothing a Visual Basic-ben), és nem kell egyedinek lennie. Az IDictionary interfész lehetővé teszi a benne lévő kulcsok és értékek felsorolását, de ez nem jelent konkrét rendezési sorrendet.
A foreach utasítás a C# nyelvben (For Each a Visual Basic-ben és For Each a C++-ban) megköveteli az egyes elemek típusát a gyűjteményben. Mivel az IDictionary minden eleme kulcs/értékpár, az elemtípus sem kulcstípus, sem értéktípus. Ehelyett egy KeyValuePair típus.
Íme egy egyszerű példaprogram
Egységosztály:
névtér Domain
{
//订单 közrend { public int OrderID { get; Szett; }
/// <summary> Rendelési dátum /// </summary> public DateTime OrderDate { get; Szett; }
/// <summary> Rendelés címe /// </summary> public string OrderAdress { get; Szett; }
/// <summary> Rendelj telefont /// </summary> public string OrderTel { get; Szett; } }
}
//订单明细
névtér Domain
{ közosztályos OrderDetail { public int DetailID { get; Szett; }
public int ProductID { get; Szett; }
/// <summary> Mennyiség /// </summary> public decimális Mennyiség { get; Szett; }
/// <summary> Egységár /// </summary> public decimal Price { get; Szett; } }
}
//存放数据
System használatával; System.Collections.Generic használatával; a System.Linq használatával; System.Text használatával; Domain használatával;
névtér szolgáltatás
{ public statikus osztály OrderStock { private statikus<Order> IList m_orderList = új list<Order>(); Definiáljunk egy általános mezőt egy listához
public static IList<Order> OrderList// egy List általános tulajdonságát definiálja { Fogd { visszatérjen m_orderList; } Készlet { m_orderList = érték; } }
privát statikus IDictionary<Order, <OrderDetail>IList> m_orders = új Szótár<Order, <OrderDetail>IList>();
//定义了一个Dictionary的泛型字段,
public static IDictionary<Order, <OrderDetail>IList> Orders/ definiál egy szótár általános tulajdonságát { Fogd { visszatérjen m_orders; } Készlet { m_orders = érték; } } }
}
Szolgáltatási interfészek
System használatával; Domain használatával; névtér szolgáltatás
{ nyilvános interfész IOrderService {
//删除 void Delete(Domain.Order entity);
Kérdezz mindenkit System.Collections.Generic.IList<Domain.Order> LoadAll();
//保存 object Save(Domain.Order entity);
//更新 void Update(Domain.Order entity);
Lekérdezés azonosító szerint Order Get(object id);
//获取下一个ID object GetNextID(); }
névtér szolgáltatás
{ nyilvános interfész 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); }
}
Szolgáltatás megvalósítása
System használatával; System.Collections.Generic használatával; a System.Linq használatával; System.Text használatával; Domain használatával;
névtér szolgáltatás
{ közosztályú OrderService : IOrderService { public IList<Order> LoadAll() { var list = OrderStock.OrderList;
visszaküldési lista; }
public object GetNextID() { int id = 1; if (OrderStock.OrderList.Count > 0) { id = OrderStock.OrderList.Max(m => m.OrderID) + 1; } visszaküldési azonosító; }
nyilvános objektum Mentés (Rend entitás) { OrderStock.OrderList.Add(entity);
Visszatér entitás. OrderID; }
public void Frissítés (Order entity) { var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID);
if (list. Count<Order>() > 0) { Sorrend = lista. Első(); OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)] = entitás; } }
Közrend Get(tárgyazonosító) { Rend entitás = null; var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id); if (list. Count<Order>() > 0) { Sorrend = lista. Első(); entity = OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)]; } vissza entitás; }
public void Delete (Order entity) { var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID); if (list. Count<Order>() > 0) { Sorrend = lista. Első(); OrderStock.OrderList.Reremove (order); } } }
}
System használatával; System.Collections.Generic használatával; a System.Linq használatával; System.Text használatával; Domain használatával;
névtér szolgáltatás
{ public class OrderDetailService : IOrderDetailService { public IDictionary<Order, <OrderDetail>IList> LoadAll() { var dic = OrderStock.Orders;
Return Dic; }
public object GetNextID() { int id = 1; if (OrderStock.Orders.Count > 0) { id = OrderStock.Orders.Max(m => m.Key.OrderID) + 1; } visszaküldési azonosító; }
public object GetNextDetailID(object mainID) { int id = 1; var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)mainID); if (dic.Count<KeyValuePair<Order, <OrderDetail>IList>>() > 0) { var item = dic.First(); var list = tétel. Value.Where(w => w.DetailID == (int)mainID); if (list. Count<OrderDetail>() > 0) { id = lista. Első(). DetailID + 1; } } visszaküldési azonosító; }
public object Save(Order entity, IList<OrderDetail> részlet) { objektum eredmény = null; ha (! OrderStock.Orders.ContainsKey(entity)) { OrderStock.Orders.Add(entitity, detail); eredmény = entitás. OrderID; } visszaadási eredmény; }
public void Update(KeyValuePair<Order, <OrderDetail>IList> entity) { if (OrderStock.Orders.ContainsKey(entity. Kulcs)) { OrderStock.Orders[entity. Kulcs] = entitás. Érték; } }
public KeyValuePair<Order, <OrderDetail>IList> Get(object id) {
KeyValuePair<Order, <OrderDetail>IList> entity = új KeyValuePair<Order, <OrderDetail>IList>(); var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)id); if (dic.Count<KeyValuePair<Order, <OrderDetail>IList>>() > 0) { entity = dic.First(); }
vissza entitás; }
public void Delete(KeyValuePair<Order, <OrderDetail>IList> entity) { if (OrderStock.Orders.ContainsKey(entity. Kulcs)) { OrderStock.Orders.Remove(entity). Kulcs); } } }
}
Teszt
System használatával; System.Collections.Generic használatával; a System.Linq használatával; System.Text használatával; NUnit.Framework használatával; Szolgáltatás használatával; Domain használatával;
névtér ServiceTest
{ [TestFixture] közosztályú OrderServiceTest { privát IOrderService m_service;
[Beállítás] public void Init() { m_service = új OrderService(); }
[Teszt] public void LoadAllTest() { var list= m_service. LoadAll(); foreach (var tétel a listán) { Console.WriteLine(item. OrderID); Console.WriteLine(item. OrderAdress); Console.WriteLine(item. OrderDate); Console.WriteLine(item. OrderTel); } Assert.IsNotNull(list); }
[Teszt] public void Save() { Order entity = new Order() { OrderID = (int)m_service. GetNextID(), OrderDate = DateTime.Now.AddDays(-1), OrderAdress = "Urumqi", OrderTel = "123123" }; objektum obj = m_service. Save(entity);
Assert.IsNotNull(obj); }
[Teszt] public void Frissítés() { Rend entitás = m_service. Get(1); entitás. OrderAdress = "Korla"; m_service. Frissítés(entity); }
[Teszt] public void Delete() { Rend entitás = m_service. Get(1); entitás. OrderAdress = "Korla"; m_service. Delete(entity); } }
}
System használatával; System.Collections.Generic használatával; a System.Linq használatával; System.Text használatával; NUnit.Framework használatával; Szolgáltatás használatával; Domain használatával;
névtér ServiceTest
{ [TestFixture] közosztályú OrderServiceDetailTest { privát IOrderDetailService m_service;
[Beállítás] public void Init() { m_service = új OrderDetailService(); }
[Teszt] public void LoadAllTest() { var list= m_service. LoadAll(); foreach (var tétel a listán) { Console.WriteLine("-------------- Order ----------"); Console.WriteLine(item. Key.OrderID); Console.WriteLine(item. Key.OrderAdress); Console.WriteLine(item. Key.OrderDate); Console.WriteLine(item. Key.OrderTel); Console.WriteLine("-------------- Order Detail ----------"); foreach (var li in item. Érték) { Console.WriteLine (li.DetailID); Console.WriteLine (li.Price); Console.WriteLine(li.Mennyiség); Console.WriteLine(li.ProductID); } } Assert.IsNotNull(list); }
[Teszt] public void Save() { int id = (int)m_service. GetNextID(); Order entity = new Order() { OrderID = id, OrderDate = DateTime.Now.AddDays(-1), OrderAdress = "Urumqi", OrderTel = "123123" }; IList<OrderDetail> list = új List<OrderDetail>(); for (int i = 0; I < 3; i++) { listát. Add(new OrderDetail() { DetailID = i + 1, Price=10+i, Mennyiség=i+100, ProductID = 1000 + i }); } objektum obj = m_service. Save(entity, list);
Assert.IsNotNull(obj); }
[Teszt] public void Frissítés() { var entity = m_service. Get(1);
entitás. Value[0] = új OrderDetail() { ProductID = 1000, DetailID = 1, Ár = 13,34M, Mennyiség = 200,1M }; m_service. Frissítés(entity); }
[Teszt] public void Delete() { var entity = m_service. Get(1); m_service. Delete(entity); } }
}
Megjegyzés: Teszteléskor hivatkoznod kell a nunit.framework eszközre |
Előző:Oszd meg két CC támadó eszközt, jó stresszteszteléshezKövetkező:Bi Fujian bocsánatkérő levelet adott ki a Weibón: Nagyon bűntudatom és szomorú vagyok
|