|
|
Publisert på 10.04.2015 17:22:50
|
|
|

IDictionary er basisgrensesnittet for en generisk samling av nøkkel/verdi-par, hvor hvert par er nøkkel-verdi i keyValuePair-objektet.
Hvert par må ha en unik nøkkel. Implementeringen varierer i om nøkkelen skal være en tom referanse eller ikke (Ingenting i Visual Basic). Denne verdien kan være en tom referanse (ingenting i Visual Basic) og trenger ikke å være unik. IDictionary-grensesnittet tillater en oppramsing av nøklene og verdiene det inneholder, men dette innebærer ingen spesifikk sorteringsrekkefølge.
Foreach-setningen i C#-språket (For Each i Visual Basic og for each i C++) krever typen til hvert element i samlingen. Siden hvert element i IDictionary er et nøkkel/verdi-par, er elementtypen verken en type nøkkel eller en type verdi. I stedet er det en KeyValuePair-type.
Her er et enkelt eksempelprogram
Entitetsklasse:
navnerom domene
{
//订单 offentlig klasseorden { public int OrderID { get; sett; }
/// <summary> Bestillingsdato /// </summary> public DateTime OrderDate { get; sett; }
/// <summary> Ordreadresse /// </summary> offentlig streng OrderAdress { get; sett; }
/// <summary> Bestill telefon /// </summary> offentlig streng OrderTel { get; sett; } }
}
//订单明细
navnerom domene
{ offentlig klasse OrderDetail { public int DetailID { get; sett; }
public int ProductID { get; sett; }
/// <summary> Antall /// </summary> offentlig desimalkvantitet { get; sett; }
/// <summary> Enhetspris /// </summary> offentlig desimal Price { get; sett; } }
}
//存放数据
ved bruk av System; ved bruk av System.Collections.Generic; ved bruk av System.Linq; ved bruk av System.Text; ved bruk av Domain;
navneromstjeneste
{ offentlig statisk klasse OrderStock { privat statisk IList<Order> m_orderList = ny Liste<Order>(); Definer et generisk felt for en liste
offentlig statisk IList<Order> OrderList// definerer en generisk egenskap ved en liste { Få tak { returnere m_orderList; } Sett { m_orderList = verdi; } }
privat statisk IDictionary<Order, IList<OrderDetail>> m_orders = ny Dictionary<Order, IList<OrderDetail>>();
//定义了一个Dictionary的泛型字段,
offentlig statisk IDictionary<Order, IList<OrderDetail>> Orders/ definerer en generell egenskap ved en ordbok { Få tak { returnere m_orders; } Sett { m_orders = verdi; } } }
}
Tjenestegrensesnitt
ved bruk av System; ved bruk av Domain; navneromstjeneste
{ offentlig grensesnitt IOrderService {
//删除 void Delete(Domain.Order-entitet);
Søk i alle System.Collections.Generic.IList<Domain.Order> LoadAll();
//保存 objekt Save(Domain.Order-entitet);
//更新 void Update(Domain.Order-enhet);
Søk etter ID Order Get (objekt-id);
//获取下一个ID objekt GetNextID(); }
navneromstjeneste
{ offentlig grensesnitt IOrderDetailService { void Delete(System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> enhet); 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-entitet, System.Collections.Generic.IList<Domain.OrderDetail> detalj); void Update(System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> enhet); }
}
Tjenesterealisering
ved bruk av System; ved bruk av System.Collections.Generic; ved bruk av System.Linq; ved bruk av System.Text; ved bruk av Domain;
navneromstjeneste
{ offentlig klasse OrderService : IOrderService { offentlig IList<Order> LoadAll() { var list = OrderStock.OrderList;
returliste; }
offentlig objekt GetNextID() { int id = 1; hvis (OrderStock.OrderList.Count > 0) { id = OrderStock.OrderList.Max(m => m.OrderID) + 1; } Return ID; }
offentlig objekt Save(Order entity) { OrderStock.OrderList.Add (enhet);
Returner entitet. OrderID; }
offentlig tomrom Oppdatering (Ordre-enhet) { var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID);
hvis (liste. Tell<Order>() > 0) { Rekkefølge = liste. First(); OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)] = enhet; } }
offentlig orden Get(objekt-id) { Ordensenhet = null; var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id); hvis (liste. Tell<Order>() > 0) { Rekkefølge = liste. First(); enhet = OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)]; } returenhet; }
offentlig tomrom Slett (Ordre-enhet) { var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID); hvis (liste. Tell<Order>() > 0) { Rekkefølge = liste. First(); BestillLager.BestillListe.Fjern(bestil); } } }
}
ved bruk av System; ved bruk av System.Collections.Generic; ved bruk av System.Linq; ved bruk av System.Text; ved bruk av Domain;
navneromstjeneste
{ offentlig klasse OrderDetailService : IOrderDetailService { offentlig IDictionary<Order, IList<OrderDetail>> LoadAll() { var dic = OrderStock.Orders;
returner DIC; }
offentlig objekt GetNextID() { int id = 1; hvis (OrderStock.Orders.Count > 0) { id = OrderStock.Orders.Max(m => m.Key.OrderID) + 1; } Return ID; }
offentlig 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(); var list = element. Value.Where(w => w.DetailID == (int)mainID); hvis (liste. Tell<OrderDetail>() > 0) { id = liste. First(). DetailID + 1; } } Return ID; }
offentlig objekt Lagre (Order entity, IList<OrderDetail> detalj) { objektresultat = null; hvis (! OrderStock.Orders.ContainsKey(entity)) { OrderStock.Orders.Add (entitet, detalj); resultat = entitet. OrderID; } returresultat; }
offentlig void Update(KeyValuePair<Order, IList<OrderDetail>> enhet) { hvis (OrderStock.Orders.ContainsKey(entity. Nøkkel)) { OrderStock.Orders[entity. Nøkkel] = entitet. Verdi; } }
offentlig 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(); }
returenhet; }
offentlig void Delete(KeyValuePair<Order, IList<OrderDetail>> enhet) { hvis (OrderStock.Orders.ContainsKey(entity. Nøkkel)) { OrdreLager.Ordrer.Fjern(entitet. Nøkkel); } } }
}
Prøve
ved bruk av System; ved bruk av System.Collections.Generic; ved bruk av System.Linq; ved bruk av System.Text; ved bruk av NUnit.Framework; bruk av Service; ved bruk av Domain;
navnerommet ServiceTest
{ [TestFixture] offentlig klasse OrderServiceTest { privat IOrderService m_service;
[Oppsett] offentlig tomrom Init() { m_service = ny OrderService(); }
[Test] offentlig tomrom LoadAllTest() { Var list= m_service. LoadAll(); Foreach (VAR-element i listen) { Console.WriteLine(item. OrderID); Console.WriteLine(item. OrderAdress); Console.WriteLine(item. OrderDate); Console.WriteLine(item. OrderTel); } Assert.IsNotNull(list); }
[Test] offentlig tomrom Save() { Order entity = 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] offentlig tomrom Oppdatering() { Ordensenhet = m_service. Get(1); entitet. OrderAdress = "Korla"; m_service. Oppdatering (entitet); }
[Test] offentlig tomrom Slett() { Ordensenhet = m_service. Get(1); entitet. OrderAdress = "Korla"; m_service. Delete(entity); } }
}
ved bruk av System; ved bruk av System.Collections.Generic; ved bruk av System.Linq; ved bruk av System.Text; ved bruk av NUnit.Framework; bruk av Service; ved bruk av Domain;
navnerommet ServiceTest
{ [TestFixture] offentlig klasse OrderServiceDetailTest { privat IOrderDetailService m_service;
[Oppsett] offentlig tomrom Init() { m_service = ny OrderDetailService(); }
[Test] offentlig tomrom 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("-------------- Order Detail ----------"); foreach (var li in item. Verdi) { Console.WriteLine(li.DetailID); Console.WriteLine (li.Price); Console.WriteLine (li.Quantity); Console.WriteLine(li.ProductID); } } Assert.IsNotNull(list); }
[Test] offentlig tomrom Save() { int id = (int)m_service. GetNextID(); Order entity = 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. Lagre (entitet, liste);
Assert.IsNotNull(obj); }
[Test] offentlig tomrom Oppdatering() { var entity = m_service. Get(1);
entitet. Value[0] = ny OrderDetail() { ProductID = 1000, DetailID = 1, Pris = 13,34 millioner, Mengde = 200,1 millioner }; m_service. Oppdatering (entitet); }
[Test] offentlig tomrom Slett() { var entity = m_service. Get(1); m_service. Delete(entity); } }
}
Merk: Du må referere til nunit.framework-verktøyet når du tester |
Foregående:Del to CC-angrepsverktøy, bra for stresstestingNeste:Bi Fujian sendte ut et unnskyldningsbrev på Weibo: Jeg føler meg veldig skyldig og trist
|