|
|
Zverejnené 10. 4. 2015 17:22:50
|
|
|

IDictionary je základné rozhranie pre generickú kolekciu párov kľúč/hodnota, z ktorých každý je pár kľúč-hodnota v objekte keyValuePair.
Každý pár musí mať jedinečný kľúč. Implementácia sa líši v tom, či povoliť kľúč ako prázdnu referenciu (v Visual Basicu nič neexistuje). Táto hodnota môže byť prázdna referencia (v Visual Basicu nič) a nemusí byť jedinečná. Rozhranie IDictionary umožňuje vymenovanie kľúčov a hodnôt, ktoré obsahuje, ale to neznamená žiadne konkrétne poradie triedenia.
Príkaz foreach v jazyku C# (For Each vo Visual Basic a pre každý v C++) vyžaduje typ každého prvku v kolekcii. Keďže každý prvok IDictionary je pár kľúč/hodnota, typ prvku nie je ani typom kľúča, ani typom hodnoty. Namiesto toho je to typ KeyValuePair.
Tu je jednoduchý príklad programu
Trieda entít:
Doména menného priestoru
{
//订单 Verejné triedne Rád { public int OrderID { get; set; }
/// <summary> Dátum objednávky /// </summary> public DateTime OrderDate { get; set; }
/// <summary> Adresa objednávky /// </summary> public string OrderAdress { get; set; }
/// <summary> Objednať telefón /// </summary> public string OrderTel { get; set; } }
}
//订单明细
Doména menného priestoru
{ verejná trieda OrderDetail { public int DetailID { get; set; }
public int ProductID { get; set; }
/// <summary> Množstvo /// </summary> verejné desatinné množstvo { get; set; }
/// <summary> Jednotková cena /// </summary> verejná desatinná cena { get; set; } }
}
//存放数据
pomocou systému; používajúc System.Collections.Generic; pomocou System.Linq; pomocou System.Text; pomocou domény;
Služba menného priestoru
{ verejná statická trieda OrderStock { súkromný statický IList<Order> m_orderList = nový List<Order>(); Definujte generické pole pre List
public static<Order> IList OrderList// definuje generickú vlastnosť Listu { Získaj { return m_orderList; } Set { m_orderList = hodnota; } }
súkromný statický IDictionary<Order, IList<OrderDetail>> m_orders = nový Dictionary<Order, <OrderDetail>IList>();
//定义了一个Dictionary的泛型字段,
public static IDictionary<Order, IList<OrderDetail>> Orders/ definuje generickú vlastnosť slovníka { Získaj { return m_orders; } Set { m_orders = hodnota; } } }
}
Rozhrania služieb
pomocou systému; pomocou domény; Služba menného priestoru
{ verejné rozhranie IOrderService {
//删除 void Delete(Domain.Order entita);
Vyhľadať všetkých System.Collections.Generic.IList<Domain.Order> LoadAll();
//保存 objekt Save(Domain.Order entita);
//更新 void Update(Domain.Order entita);
Dotaz podľa ID Order Get (objekt id);
//获取下一个ID objekt GetNextID(); }
Služba menného priestoru
{ verejné rozhranie 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); objekt GetNextDetailID (objekt mainID); objekt 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); }
}
Realizácia služby
pomocou systému; používajúc System.Collections.Generic; pomocou System.Linq; pomocou System.Text; pomocou domény;
Služba menného priestoru
{ public class OrderService : IOrderService { public IList<Order> LoadAll() { var list = OrderStock.OrderList;
zoznam návratov; }
verejný objekt GetNextID() { int id = 1; ak (OrderStock.OrderList.Count > 0) { id = OrderStock.OrderList.Max(m => m.OrderID) + 1; } vrátiť ID; }
public object Save(Order entity) { OrderStock.OrderList.Add(entity);
vrátiť entitu. OrderID; }
public void Aktualizácia (Príkazová entita) { var list = OrderStock.OrderList.Where(w => w.OrderID == entita. OrderID);
ak (zoznam. Count<Order>() > 0) { Poradie = zoznam. First(); OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)] = entita; } }
public Order Get(object id) { Entita rádu = null; var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id); ak (zoznam. Count<Order>() > 0) { Poradie = zoznam. First(); entita = ObjednávkaZásoba.ObjednávkaZoznam[ObjednávkaZásoba.ObjednávkaZoznam.IndexIndexOf(objednávky)]; } vrátiť entitu; }
public void Delete (Order entity) { var list = OrderStock.OrderList.Where(w => w.OrderID == entita. OrderID); ak (zoznam. Count<Order>() > 0) { Poradie = zoznam. First(); OrderStock.OrderList.Remove(order); } } }
}
pomocou systému; používajúc System.Collections.Generic; pomocou System.Linq; pomocou System.Text; pomocou domény;
Služba menného priestoru
{ public class OrderDetailService : IOrderDetailService { public IDictionary<Order, IList<OrderDetail>> LoadAll() { var dic = ObjednávkaZásoby.Objednávky;
return dic; }
verejný objekt GetNextID() { int id = 1; ak (OrderStock.Orders.Count > 0) { id = OrderStock.Orders.Max(m => m.Key.OrderID) + 1; } vrátiť ID; }
public object GetNextDetailID (object mainID) { int id = 1; var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)mainID); ak (dic.Count<KeyValuePair<Order, IList<OrderDetail>>>() > 0) { var položka = dic.First(); var list = položka. Value.Where(w => w.DetailID == (int)mainID); ak (zoznam. Count<OrderDetail>() > 0) { id = zoznam. First(). DetailID + 1; } } vrátiť ID; }
public object Save (Order entity,<OrderDetail> IList detail) { výsledok objektu = null; ak (! OrderStock.Orders.ContainsKey(entity)) { OrderStock.Orders.Add(entity, detail); výsledok = entita. OrderID; } vrátiť výsledok; }
public void Update(KeyValuePair<Order, IList<OrderDetail>> entity) { ak (OrderStock.Orders.ContainsKey(entity. Key)) { OrderStock.Orders[entita. Key] = entita. Hodnota; } }
public KeyValuePair<Order, IList<OrderDetail>> Get(object id) {
KeyValuePair<Order, IList<OrderDetail>> entita = nový KeyValuePair<Order, IList<OrderDetail>>(); var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)id); ak (dic.Count<KeyValuePair<Order, IList<OrderDetail>>>() > 0) { entity = dic.First(); }
vrátiť entitu; }
public void Delete(KeyValuePair<Order, IList<OrderDetail>> entity) { ak (OrderStock.Orders.ContainsKey(entity. Key)) { ObjednaťSklad.Príkazy.Odstrániť(entita. Key); } } }
}
Test
pomocou systému; používajúc System.Collections.Generic; pomocou System.Linq; pomocou System.Text; pomocou NUnit.Framework; pomocou Service; pomocou domény;
Menný priestor ServiceTest
{ [TestFixture] verejná trieda OrderServiceTest { súkromný IOrderService m_service;
[Nastavenie] public void Init() { m_service = nový OrderService(); }
[Test] public void LoadAllTest() { var list= m_service. LoadAll(); foreach (var položka v zozname) { Console.WriteLine(položka. OrderID); Console.WriteLine(položka. OrderAdress); Console.WriteLine(položka. OrderDate); Console.WriteLine(položka. OrderTel); } Assert.IsNotNull(list); }
[Test] public void Save() { Order entity = nový Order() { OrderID = (int)m_service. GetNextID(), OrderDate = DateTime.Now.AddDays(-1), OrderAdress = "Urumči", OrderTel = "123123" }; objekt objektu = m_service. Save(enta);
Assert.IsNotNull(obj); }
[Test] public void Update() { Entita rádu = m_service. Get(1); entita. OrderAdress = "Korla"; m_service. Aktualizácia(enta); }
[Test] public void Delete() { Entita rádu = m_service. Get(1); entita. OrderAdress = "Korla"; m_service. Delete(entity); } }
}
pomocou systému; používajúc System.Collections.Generic; pomocou System.Linq; pomocou System.Text; pomocou NUnit.Framework; pomocou Service; pomocou domény;
Menný priestor ServiceTest
{ [TestFixture] verejná trieda OrderServiceDetailTest { súkromný IOrderDetailService m_service;
[Nastavenie] public void Init() { m_service = nový OrderDetailService(); }
[Test] public void LoadAllTest() { var list= m_service. LoadAll(); foreach (var položka v zozname) { Console.WriteLine("-------------- Order ----------"); Console.WriteLine(položka. Key.OrderID); Console.WriteLine(položka. Key.OrderAdress); Console.WriteLine(položka. Key.OrderDate); Console.WriteLine(položka. Key.OrderTel); Console.WriteLine("-------------- Order Detail ----------"); foreach (var li in item. Hodnota) { Console.WriteLine(li.DetailID); Console.WriteLine(li.Price); Console.WriteLine(li.Quantity); Console.WriteLine(li.ProductID); } } Assert.IsNotNull(list); }
[Test] public void Save() { int id = (int)m_service. GetNextID(); Order entity = nový Order() { OrderID = id, OrderDate = DateTime.Now.AddDays(-1), OrderAdress = "Urumči", OrderTel = "123123" }; <OrderDetail> IList list = nový List<OrderDetail>(); pre (int i = 0; Mám < 3; i++) { zoznam. Add(new OrderDetail() { DetailID = i + 1, Cena=10+i, Quantity=i+100, ProductID = 1000 + i }); } objekt objektu = m_service. Uložiť (entita, zoznam);
Assert.IsNotNull(obj); }
[Test] public void Update() { entita var = m_service. Get(1);
entita. Value[0] = nový OrderDetail() { ProductID = 1000, DetailID = 1, Cena = 13,34 milióna, Množstvo = 200,1M }; m_service. Aktualizácia(enta); }
[Test] public void Delete() { entita var = m_service. Get(1); m_service. Delete(entity); } }
}
Poznámka: Pri testovaní je potrebné odkazovať na nástroj nunit.framework |
Predchádzajúci:Zdieľam dva nástroje na CC útoky, dobré na záťažové testovanieBudúci:Bi Fujian vydal na Weibo ospravedlňujúci list: Cítim sa veľmi previnilo a smutno
|