|
|
Geplaatst op 10-04-2015 17:22:50
|
|
|

IDictionary is de basisinterface voor een generieke verzameling sleutel/waardeparen, elk een sleutel-waardepaar in het keyValuePair-object.
Elk paar moet een unieke sleutel hebben. De implementatie verschilt in de vraag of de sleutel een lege referentie mag zijn (niets in Visual Basic). Deze waarde kan een lege referentie zijn (niets in Visual Basic) en hoeft niet uniek te zijn. De IDictionary-interface maakt een opsomming van de sleutels en waarden die het bevat mogelijk, maar dit impliceert geen specifieke sorteervolgorde.
De foreach-instructie in de C#-taal (For Each in Visual Basic en voor each in C++) vereist het type van elk element in de collectie. Aangezien elk element van IDictionary een sleutel/waarde-paar is, is het elementtype noch een type sleutel, noch een type waarde. In plaats daarvan is het een KeyValuePair-type.
Hier is een eenvoudig voorbeeldprogramma
Entiteitsklasse:
naamruimte Domein
{
//订单 Orde van de openbare klasse { publieke int OrderID { get; set; }
/// <summary> Besteldatum /// </summary> public DateTime OrderDate { get; set; }
/// <summary> Besteladres /// </summary> publieke string OrderAdress { get; set; }
/// <summary> Bestel telefoon /// </summary> publieke string OrderTel { get; set; } }
}
//订单明细
naamruimte Domein
{ publieke klasse OrderDetail { public int DetailID { get; set; }
public int ProductID { get; set; }
/// <summary> Aantal /// </summary> publieke decimale Quantity { get; set; }
/// <summary> Eenheidsprijs /// </summary> publieke decimale Price { get; set; } }
}
//存放数据
met behulp van System; met behulp van System.Collections.Generic; met behulp van System.Linq; gebruik van System.Text; met behulp van Domain;
naamruimtedienst
{ publieke statische klasse OrderStock { privé statisch IList<Order> m_orderList = nieuwe Lijst<Order>(); Definieer een generiek veld voor een Lijst
publieke statische IList<Order> OrderList// definieert een generieke eigenschap van een List { Toevoegen { Keer terug m_orderList; } Set { m_orderList = waarde; } }
privé statisch IDictionary<Order, IList<OrderDetail>> m_orders = nieuw Dictionary<Order, IList<OrderDetail>>();
//定义了一个Dictionary的泛型字段,
publieke statische IDictionary<Order, IList<OrderDetail>> Orders/ definieert een generieke eigenschap van een woordenboek { Toevoegen { keer terug m_orders; } Set { m_orders = waarde; } } }
}
Service-interfaces
met behulp van System; met behulp van Domain; naamruimtedienst
{ publieke interface IOrderService {
//删除 void Delete(Domain.Order-entiteit);
Zoek alles op System.Collections.Generic.IList<Domain.Order> LoadAll();
//保存 object Save(Domain.Order entiteit);
//更新 void Update (Domain.Order-entiteit);
Zoekopdracht op ID Order Get (object-id);
//获取下一个ID object GetNextID(); }
naamruimtedienst
{ publieke interface IOrderDetailService { void Delete(System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> entiteit); 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>> entiteit); }
}
Dienstrealisatie
met behulp van System; met behulp van System.Collections.Generic; met behulp van System.Linq; gebruik van System.Text; met behulp van Domain;
naamruimtedienst
{ publieke klasse OrderService : IOrderService { publieke IList<Order> LoadAll() { var list = OrderStock.OrderList;
retourlijst; }
publiek object GetNextID() { int id = 1; if (OrderStock.OrderList.Count > 0) { id = OrderStock.OrderList.Max(m => m.OrderID) + 1; } Retour-ID; }
publiek object Save(Order entity) { OrderStock.OrderList.Add (entiteit);
Return-entiteit. OrderID; }
public void Update (Order-entiteit) { var list = OrderStock.OrderList.Where(w => w.OrderID == entiteit. OrderID);
als (lijst. Tellen<Order>() > 0) { Volgorde = lijst. Eerste(); OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)] = entiteit; } }
openbare orde Get(object id) { Orde-entiteit = nul; var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id); als (lijst. Tellen<Order>() > 0) { Volgorde = lijst. Eerste(); entiteit = OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)]; } retourentiteit; }
publieke leegte Verwijderen (Order-entiteit) { var list = OrderStock.OrderList.Where(w => w.OrderID == entiteit. OrderID); als (lijst. Tellen<Order>() > 0) { Volgorde = lijst. Eerste(); OrderStock.OrderList.Remove(order); } } }
}
met behulp van System; met behulp van System.Collections.Generic; met behulp van System.Linq; gebruik van System.Text; met behulp van Domain;
naamruimtedienst
{ publieke klasse OrderDetailService : IOrderDetailService { publieke IDictionary<Order, IList<OrderDetail>> LoadAll() { var dic = OrderStock.Orders;
Geef DIC terug; }
publiek object GetNextID() { int id = 1; if (OrderStock.Orders.Count > 0) { id = OrderStock.Orders.Max(m => m.Key.OrderID) + 1; } Retour-ID; }
publiek object GetNextDetailID (object mainID) { int id = 1; var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)mainID); als (dic.Count<KeyValuePair<Order, IList<OrderDetail>>>() > 0) { var item = dic.First(); Var-lijst = item. Value.Where(w => w.DetailID == (int)mainID); als (lijst. Count<OrderDetail>() > 0) { id = lijst. Ten eerste(). DetailID + 1; } } Retour-ID; }
publiek object Save(Order entity, IList<OrderDetail> detail) { objectresultaat = null; als (! OrderStock.Orders.BevatsKey(entiteit)) { OrderStock.Orders.Add (entiteit, detail); resultaat = entiteit. OrderID; } retourresultaat; }
public void Update(KeyValuePair<Order, IList<OrderDetail>> entiteit) { als (OrderStock.Orders.ContainsKey(entity. Key)) { OrderStock.Orders[entiteit. Key] = entiteit. Waarde; } }
publieke KeyValuePair<Order, IList<OrderDetail>> Get(object id) {
KeyValuePair<Order, IList<OrderDetail>> entiteit = nieuwe KeyValuePair<Order, IList<OrderDetail>>(); var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)id); als (dic.Count<KeyValuePair<Order, IList<OrderDetail>>>() > 0) { entiteit = dic.First(); }
retourentiteit; }
public void Delete(KeyValuePair<Order, IList<OrderDetail>> entiteit) { als (OrderStock.Orders.ContainsKey(entity. Key)) { OrderStock.Orders.Verwijderen(entiteit. Sleutel); } } }
}
Test
met behulp van System; met behulp van System.Collections.Generic; met behulp van System.Linq; gebruik van System.Text; gebruik van NUnit.Framework; gebruik maken van Service; met behulp van Domain;
naamruimte ServiceTest
{ [TestFixture] publieke klasse OrderServiceTest { particuliere IOrderService m_service;
[Opzet] publieke leegte Init() { m_service = nieuwe OrderService(); }
[Test] publieke void LoadAllTest() { Var list= m_service. LoadAll(); Foreach (VAR-item in de lijst) { Console.WriteLine(item. OrderID); Console.WriteLine(item. OrderAdress); Console.WriteLine(item. OrderDate); Console.WriteLine(item. OrderTel); } Assert.IsNotNull(list); }
[Test] openbare leegte Save() { Order-entiteit = nieuwe Order() { OrderID = (int)m_service. GetNextID(), OrderDate = DateTime.Now.AddDays(-1), OrderAdress = "Urumqi", OrderTel = "123123" }; object obj = m_service. Save(entiteit);
Assert.IsNotNull(obj); }
[Test] public void Update() { Orderentiteit = m_service. Get(1); entiteit. OrderAdress = "Korla"; m_service. Update(entiteit); }
[Test] public void Verwijderen() { Orderentiteit = m_service. Get(1); entiteit. OrderAdress = "Korla"; m_service. Verwijderen(entiteit); } }
}
met behulp van System; met behulp van System.Collections.Generic; met behulp van System.Linq; gebruik van System.Text; gebruik van NUnit.Framework; gebruik maken van Service; met behulp van Domain;
naamruimte ServiceTest
{ [TestFixture] publieke klasse OrderServiceDetailTest { privé IOrderDetailService m_service;
[Opzet] publieke leegte Init() { m_service = nieuwe OrderDetailService(); }
[Test] publieke void LoadAllTest() { Var list= m_service. LoadAll(); Foreach (VAR-item in de lijst) { Console.WriteLine("-------------- Order ----------"); Console.WriteLine(item. Sleutel.OrderID); Console.WriteLine(item. Key.OrderAddress); Console.WriteLine(item. Sleutel.OrderDate); Console.WriteLine(item. Key.OrderTel); Console.WriteLine("-------------- Order Detail ----------"); foreach (var li in item. Waarde) { Console.WriteLine(li.DetailID); Console.WriteLine (li.Price); Console.WriteLine(li.Quantity); Console.WriteLine(li.ProductID); } } Assert.IsNotNull(list); }
[Test] openbare leegte Save() { int id = (int)m_service. GetNextID(); Order-entiteit = nieuwe Order() { OrderID = id, OrderDate = DateTime.Now.AddDays(-1), OrderAdress = "Urumqi", OrderTel = "123123" }; IList<OrderDetail> list = nieuwe List<OrderDetail>(); voor (int i = 0; Ik < 3; i++) { lijst. Add(new OrderDetail() { DetailID = i + 1, Price=10+i, Hoeveelheid=i+100, ProductID = 1000 + i }); } object obj = m_service. Save(entiteit, lijst);
Assert.IsNotNull(obj); }
[Test] public void Update() { var-entiteit = m_service. Get(1);
entiteit. Value[0] = nieuwe OrderDetail() { ProductID = 1000, DetailID = 1, Prijs = 13,34 miljoen, Hoeveelheid = 200,1M }; m_service. Update(entiteit); }
[Test] public void Verwijderen() { var-entiteit = m_service. Get(1); m_service. Verwijderen(entiteit); } }
}
Opmerking: Je moet bij het testen de nunit.framework-tool raadplegen |
Vorig:Deel twee CC-aanvalstools, goed voor stresstestenVolgend:Bi Fujian heeft een verontschuldigingsbrief op Weibo geplaatst: Ik voel me erg schuldig en verdrietig
|