|
|
Opslået på 10/04/2015 17.22.50
|
|
|

IDictionary er basisgrænsefladen for en generisk samling af nøgle/værdi-par, hvor hver er et nøgle-værdi-par i keyValuePair-objektet.
Hvert par skal have en unik nøgle. Implementeringen adskiller sig i, om nøglen skal være en tom reference (Nothing in Visual Basic). Denne værdi kan være en tom reference (intet i Visual Basic) og behøver ikke være unik. IDictionary-grænsefladen tillader en opremsning af de nøgler og værdier, den indeholder, men dette indebærer ikke nogen specifik sorteringsrækkefølge.
Foreach-sætningen i C#-sproget (For Each i Visual Basic og for each i C++) kræver typen af hvert element i samlingen. Da hvert element i IDictionary er et nøgle/værdi-par, er elementtypen hverken en type af en nøgle eller en type af værdi. I stedet er det en KeyValuePair-type.
Her er et simpelt eksempelprogram
Entitetsklasse:
navnerum Domæne
{
//订单 offentlig klasseorden { public int OrderID { get; sat; }
/// <summary> Bestillingsdato /// </summary> public DateTime OrderDate { get; sat; }
/// <summary> Ordreadresse /// </summary> public string OrderAdress { get; sat; }
/// <summary> Bestil telefon /// </summary> public string OrderTel { get; sat; } }
}
//订单明细
navnerum Domæne
{ offentlig klasse OrderDetail { public int DetailID { get; sat; }
public int ProductID { get; sat; }
/// <summary> Mængde /// </summary> offentlig decimal Mængde { get; sat; }
/// <summary> Enhedspris /// </summary> offentlig decimal Price { get; sat; } }
}
//存放数据
ved brug af System; ved brug af System.Collections.Generic; ved brug af System.Linq; ved brug af System.Text; ved brug af Domain;
navnerumstjeneste
{ offentlig statisk klasse OrderStock { privat statisk IList<Order> m_orderList = ny Liste<Order>(); Definér et generisk felt for en liste
offentlig statisk<Order> IList OrderList// definerer en generisk egenskab ved en liste { Få fat { vend tilbage m_orderList; } Sæt { m_orderList = værdi; } }
privat statisk IDictionary<Order, IList<OrderDetail>> m_orders = ny Dictionary<Order, IList<OrderDetail>>();
//定义了一个Dictionary的泛型字段,
offentlig statisk IDictionary<Order, IList<OrderDetail>> Orders/ definerer en generisk egenskab ved en ordbog { Få fat { vend tilbage m_orders; } Sæt { m_orders = værdi; } } }
}
Servicegrænseflader
ved brug af System; ved brug af Domain; navnerumstjeneste
{ offentlig grænseflade IOrderService {
//删除 void Delete (Domain.Order-entitet);
Forespørg alle System.Collections.Generic.IList<Domain.Order> LoadAll();
//保存 objekt Save(Domain.Order-entitet);
//更新 void Opdatering (Domain.Order-entitet);
Forespørgsel efter ID Order Get (objekt-id);
//获取下一个ID objekt GetNextID(); }
navnerumstjeneste
{ offentlig grænseflade IOrderDetailService { void Delete(System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> entitet); System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> Get(object id); objekt GetNextDetailID (objekt mainID); objekt GetNextID(); System.Collections.Generic.IDictionary<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> LoadAll(); objekt 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>> entitet); }
}
Servicerealisering
ved brug af System; ved brug af System.Collections.Generic; ved brug af System.Linq; ved brug af System.Text; ved brug af Domain;
navnerumstjeneste
{ offentlig klasse OrderService : IOrderService { offentlig IList<Order> LoadAll() { var list = OrderStock.OrderList;
tilbagevendende liste; }
offentligt objekt GetNextID() { int id = 1; hvis (OrderStock.OrderList.Count > 0) { id = OrderStock.OrderList.Max(m => m.OrderID) + 1; } Return ID; }
offentligt objekt Gem (Ordre-entitet) { OrderStock.OrderList.Add(entity);
Return-enhed. OrderID; }
offentlig void Opdatering (Ordre-enhed) { var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID);
hvis (liste. Count<Order>() > 0) { Rækkefølge = liste. First(); OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)] = enhed; } }
public order get(objekt-id) { Ordensenhed = null; var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id); hvis (liste. Count<Order>() > 0) { Rækkefølge = liste. First(); enhed = OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)]; } returenhed; }
offentlig ugyldighed Slet (Ordreenhed) { var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID); hvis (liste. Count<Order>() > 0) { Rækkefølge = liste. First(); OrderStock.OrderList.Remove(order); } } }
}
ved brug af System; ved brug af System.Collections.Generic; ved brug af System.Linq; ved brug af System.Text; ved brug af Domain;
navnerumstjeneste
{ offentlig klasse OrderDetailService : IOrderDetailService { offentlig IDictionary<Order, IList<OrderDetail>> LoadAll() { var dic = OrderStock.Orders;
returnér DIC; }
offentligt objekt GetNextID() { int id = 1; hvis (OrderStock.Orders.Count > 0) { id = OrderStock.Orders.Max(m => m.Key.OrderID) + 1; } Return ID; }
offentligt objekt GetNextDetailID (objekt mainID) { int id = 1; var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)mainID); hvis (dic.Count<KeyValuePair<Order, IList<OrderDetail>>>() > 0) { var-element = dic.First(); Varlist = Element. Value.Where(w => w.DetailID == (int)mainID); hvis (liste. Count<OrderDetail>() > 0) { id = liste. Først(). DetailID + 1; } } Return ID; }
public object Gem (Order entity, IList<OrderDetail> detail) { objektresultat = null; hvis (! OrderStock.Orders.ContainsKey(entity)) { OrderStock.Orders.Add(entity, detail); resultat = entitet. OrderID; } returneringsresultat; }
public void Update(KeyValuePair<Order, IList<OrderDetail>> entity) { hvis (OrderStock.Orders.ContainsKey(entity. Nøgle)) { OrdreLager.Ordrer[entitet. nøgle] = entitet. Værdi; } }
public KeyValuePair<Order, IList<OrderDetail>> Get(object id) {
KeyValuePair<Order, IList<OrderDetail>> entity = ny KeyValuePair<Order, IList<OrderDetail>>(); var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)id); hvis (dic.Count<KeyValuePair<Order, IList<OrderDetail>>>() > 0) { entitet = dic.First(); }
returenhed; }
public void Delete(KeyValuePair<Order, IList<OrderDetail>> entity) { hvis (OrderStock.Orders.ContainsKey(entity. Nøgle)) { OrdreLager.Ordrer.Fjern(entitet. Nøgle); } } }
}
Test
ved brug af System; ved brug af System.Collections.Generic; ved brug af System.Linq; ved brug af System.Text; ved brug af NUnit.Framework; brug af Service; ved brug af Domain;
navnerum ServiceTest
{ [TestFixture] offentlig klasse OrderServiceTest { privat IOrderService m_service;
[Opsætning] offentlig tomrum Init() { m_service = ny OrderService(); }
[Test] offentlig void LoadAllTest() { var list= m_service. LoadAll(); Foreach (VAR-element i listen) { Console.WriteLine(item. OrderID); Console.WriteLine(item. OrderAdresse); Console.WriteLine(item. OrderDate); Console.WriteLine(item. OrderTel); } Assert.IsNotNull(list); }
[Test] offentlig tomrum Save() { Order-enhed = ny Order() { OrderID = (int)m_service. GetNextID(), OrderDate = DateTime.Now.AddDays(-1), OrderAdress = "Urumqi", OrderTel = "123123" }; objekt obj = m_service. Save(entitet);
Assert.IsNotNull(obj); }
[Test] public void Opdatering() { Ordensenhed = m_service. Get(1); entitet. OrderAdress = "Korla"; m_service. Opdatering(entitet); }
[Test] offentlig tomhed Slet() { Ordensenhed = m_service. Get(1); entitet. OrderAdress = "Korla"; m_service. Delete(entity); } }
}
ved brug af System; ved brug af System.Collections.Generic; ved brug af System.Linq; ved brug af System.Text; ved brug af NUnit.Framework; brug af Service; ved brug af Domain;
navnerum ServiceTest
{ [TestFixture] offentlig klasse OrderServiceDetailTest { privat IOrderDetailService m_service;
[Opsætning] offentlig tomrum Init() { m_service = ny OrderDetailService(); }
[Test] offentlig void LoadAllTest() { var list= m_service. LoadAll(); Foreach (VAR-element i listen) { Console.WriteLine("-------------- Order ----------"); Console.WriteLine(item. Key.OrderID); Console.WriteLine(item. Key.OrderAddress); Console.WriteLine(item. Key.OrderDate); Console.WriteLine(item. Key.OrderTel); Console.WriteLine("-------------- Ordredetalje ----------"); foreach (var li in item. Værdi) { Console.WriteLine(li.DetailID); Console.WriteLine (li.Price); Console.WriteLine(li.Quantity); Console.WriteLine(li.ProductID); } } Assert.IsNotNull(list); }
[Test] offentlig tomrum Save() { int id = (int)m_service. GetNextID(); Order-enhed = ny Order() { OrderID = id, OrderDate = DateTime.Now.AddDays(-1), OrderAdress = "Urumqi", OrderTel = "123123" }; IList<OrderDetail> list = ny Liste<OrderDetail>(); for (int i = 0; Jeg < 3; i++) { liste. Add(new OrderDetail() { DetailID = i + 1, Price=10+i, Kvantitet=i+100, ProductID = 1000 + i }); } objekt obj = m_service. Gem (entitet, liste);
Assert.IsNotNull(obj); }
[Test] public void Opdatering() { var entity = m_service. Get(1);
entitet. Value[0] = ny OrderDetail() { ProductID = 1000, DetailID = 1, Pris = 13,34 mio. Mængde = 200,1 mio. }; m_service. Opdatering(entitet); }
[Test] offentlig tomhed Slet() { var entity = m_service. Get(1); m_service. Delete(entity); } }
}
Bemærk: Du skal referere til nunit.framework-værktøjet, når du tester |
Tidligere:Del to CC-angrebsværktøjer, gode til stresstestNæste:Bi Fujian udsendte et undskyldningsbrev på Weibo: Jeg føler mig meget skyldig og trist
|