|
|
Publicēts 10.04.2015 17:22:50
|
|
|

IDictionary ir bāzes interfeiss vispārējai atslēgu/vērtību pāru kolekcijai, no kuriem katrs ir atslēgas-vērtības pāris keyValuePair objektā.
Katram pārim jābūt unikālai atslēgai. Ieviešana atšķiras ar to, vai ļaut atslēgai būt tukšai atsaucei (Visual Basic nekas). Šī vērtība var būt tukša atsauce (Visual Basic nekas), un tai nav jābūt unikālai. IDictionary interfeiss ļauj uzskaitīt tajā esošās atslēgas un vērtības, bet tas nenozīmē īpašu kārtošanas secību.
Priekšrakstam foreach C# valodā (katram Visual Basic un katram C++) ir nepieciešams katra kolekcijas elementa tips. Tā kā katrs IDictionary elements ir atslēgas/vērtības pāris, elementa tips nav ne atslēgas, ne vērtības tips. Tā vietā tas ir KeyValuePair tips.
Šeit ir vienkāršs programmas piemērs
Vienības klase:
nosaukumvietas domēns
{
//订单 sabiedriskās klases kārtība { public int OrderID { get; komplekts; }
/// <summary> Pasūtījuma datums /// </summary> publiskais DateTime OrderDate { get; komplekts; }
/// <summary> Pasūtījuma adrese /// </summary> publiskā virkne OrderAdress { get; komplekts; }
/// <summary> Pasūtīt tālruni /// </summary> publiskā virkne OrderTel { get; komplekts; } }
}
//订单明细
nosaukumvietas domēns
{ publiskā klase OrderDetail { public int DetailID { get; komplekts; }
public int ProductID { get; komplekts; }
/// <summary> daudzums /// </summary> publiskais decimālais skaitlis Daudzums { iegūt; komplekts; }
/// <summary> Vienības cena /// </summary> publiskā decimāldaļa Cena { get; komplekts; } }
}
//存放数据
izmantojot Sistēmu; izmantojot System.Collections.Generic; izmantojot System.Linq; izmantojot System.Text; izmantojot domēnu;
nosaukumvietas pakalpojums
{ publiskā statiskā klase OrderStock { privāts statisks IList<Order> m_orderList = jauns List<Order>(); Vispārīga lauka definēšana sarakstam
publiskais statiskais IList<Order> OrderList// definē saraksta vispārējo rekvizītu { iegūt { atgriešanās m_orderList; } Komplekts { m_orderList = vērtība; } }
privātais statiskais IDictionary<Order, IList<OrderDetail>> m_orders = jauna vārdzīme<kārtība, IList<OrderDetail>>();
//定义了一个Dictionary的泛型字段,
publiskais statiskais IDictionary<Order, IList<OrderDetail>> Orders/ definē vārdnīcas vispārīgu rekvizītu { iegūt { atgriešanās m_orders; } Komplekts { m_orders = vērtība; } } }
}
Pakalpojumu saskarnes
izmantojot Sistēmu; izmantojot domēnu; nosaukumvietas pakalpojums
{ publiskais interfeiss IOrderService {
//删除 void Delete(entītija Domain.Order);
Vaicāt visiem System.Collections.Generic.IList<Domain.Order> LoadAll();
//保存 objekts Save(entītija Domain.Order);
//更新 anulēt Update(entītija Domain.Order);
Vaicājums pēc ID Order Get(objekta ID);
//获取下一个ID objekts GetNextID(); }
nosaukumvietas pakalpojums
{ publiskais interfeiss IOrderDetailService { void Delete(entītija System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>>); System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> Get(objekta ID); objekts GetNextDetailID(objekta mainID); objekts GetNextID(); System.Collections.Generic.IDictionary<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> LoadAll(); objekts Saglabāt(entītija Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail> detalizēta informācija); void Update(entītija System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>>); }
}
Pakalpojuma realizācija
izmantojot Sistēmu; izmantojot System.Collections.Generic; izmantojot System.Linq; izmantojot System.Text; izmantojot domēnu;
nosaukumvietas pakalpojums
{ publiskā klase OrderService : IOrderService { publiskais IList<Order> LoadAll() { var list = OrderStock.OrderList;
atgriešanas saraksts; }
publiskais objekts GetNextID() { int id = 1; if (OrderStock.OrderList.Count > 0) { id = OrderStock.OrderList.Max(m => m.OrderID) + 1; } atgriešanas ID; }
publiskais objekts Saglabāt(Pasūtījuma entītija) { OrderStock.OrderList.Add(vienība);
atgriešanās vienība. Pasūtījuma ID; }
public void Update(Pasūtījuma entītija) { var list = OrderStock.OrderList.Where(w => w.OrderID == entītija. Pasūtījuma ID);
if (saraksts. Skaits<Order>() > 0) { Pasūtījuma secība = saraksts. Pirmais (); OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)] = entītija; } }
Sabiedriskā pasūtījuma iegūšana(objekta ID) { Pasūtījuma entītija = null; var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id); if (saraksts. Skaits<Order>() > 0) { Pasūtījuma secība = saraksts. Pirmais (); entītija = OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)]; } atgriešanās vienība; }
public void Delete(Pasūtījuma entītija) { var list = OrderStock.OrderList.Where(w => w.OrderID == entītija. Pasūtījuma ID); if (saraksts. Skaits<Order>() > 0) { Pasūtījuma secība = saraksts. Pirmais (); OrderStock.OrderList.Remove(pasūtījums); } } }
}
izmantojot Sistēmu; izmantojot System.Collections.Generic; izmantojot System.Linq; izmantojot System.Text; izmantojot domēnu;
nosaukumvietas pakalpojums
{ publiskā klase OrderDetailService : IOrderDetailService { publiskais IDictionary<Order, IList<OrderDetail>> LoadAll() { var dic = Pasūtījuma.Pasūtījumi;
atgriešanās dic; }
publiskais objekts GetNextID() { int id = 1; if (OrderStock.Orders.Count > 0) { id = OrderStock.Orders.Max(m => m.Key.OrderID) + 1; } atgriešanas ID; }
publiskais objekts GetNextDetailID(objekta mainID) { int id = 1; var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)mainID); if (dic.Count<KeyValuePair<Order, IList<OrderDetail>>>() > 0) { var item = dic.First(); var list = prece. Value.Where(w => w.DetailID == (int)mainID); if (saraksts. Skaits<OrderDetail>() > 0) { id = saraksts. Pirmais (). Detalizēts ID + 1; } } atgriešanas ID; }
publiskais objekts Saglabāt(Pasūtījuma entītija, IList<OrderDetail> detaļa) { objekta rezultāts = null; ja (! OrderStock.Orders.ContainsKey(entītija)) { OrderStock.Orders.Add(vienība, detalizēta informācija); rezultāts = vienība. Pasūtījuma ID; } atgriezt rezultātu; }
public void Update(KeyValuePair<Order, IList<OrderDetail>> entītija) { if (OrderStock.Orders.ContainsKey(entītija. Atslēga)) { OrderStock.Orders[vienība. Atslēga] = entītija. Vērtība; } }
public KeyValuePair<Order, IList<OrderDetail>> Get(objekta id) {
KeyValuePair<Order, IList<OrderDetail>> entītija = jauns KeyValuePair<Order, IList<OrderDetail>>(); var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)id); if (dic.Count<KeyValuePair<Order, IList<OrderDetail>>>() > 0) { vienība = dic.Pirmais(); }
atgriešanās vienība; }
public void Delete(KeyValuePair<Order, IList<OrderDetail>> entītija) { if (OrderStock.Orders.ContainsKey(entītija. Atslēga)) { OrderStock.Orders.Remove(entītija. Atslēga); } } }
}
Tests
izmantojot Sistēmu; izmantojot System.Collections.Generic; izmantojot System.Linq; izmantojot System.Text; izmantojot NUnit.Framework; izmantojot Pakalpojumu; izmantojot domēnu;
nosaukumvietas pakalpojuma pārbaude
{ [Testa aprīkojums] publiskās klases OrderServiceTest { privāts IOrderService m_service;
[Iestatīšana] publisks spēkā neesošs Init() { m_service = jauns OrderService(); }
[Pārbaude] publisks void LoadAllTest() { var list= m_service. LoadAll(); foreach (saraksta var) { Console.WriteLine(vienums. Pasūtījuma ID); Console.WriteLine(vienums. Pasūtījuma adrese); Console.WriteLine(vienums. Pasūtījuma datums); Console.WriteLine(vienums. OrderTel); } Assert.IsNotNull(saraksts); }
[Pārbaude] public void Save() { Pasūtījuma entītija = jauns Order() { Pasūtījuma ID = (int)m_service. GetNextID(), OrderDate = DateTime.Now.AddDays(-1), OrderAdress = "Urumqi", OrderTel = "123123" }; objekts obj = m_service. Saglabāt (vienība);
Assert.IsNotNull(obj); }
[Pārbaude] publisks anulēts atjauninājums() { Pasūtījuma vienība = m_service. Iegūt (1); vienība. OrderAdress = "Korla"; m_service. Atjauninājums(vienība); }
[Pārbaude] public void Delete() { Pasūtījuma vienība = m_service. Iegūt (1); vienība. OrderAdress = "Korla"; m_service. Dzēst(entītija); } }
}
izmantojot Sistēmu; izmantojot System.Collections.Generic; izmantojot System.Linq; izmantojot System.Text; izmantojot NUnit.Framework; izmantojot Pakalpojumu; izmantojot domēnu;
nosaukumvietas pakalpojuma pārbaude
{ [Testa aprīkojums] publiskās klases OrderServiceDetailTest { privāts IOrderDetailService m_service;
[Iestatīšana] publisks spēkā neesošs Init() { m_service = jauns OrderDetailService(); }
[Pārbaude] publisks void LoadAllTest() { var list= m_service. LoadAll(); foreach (saraksta var) { Console.WriteLine ("-------------- Order ----------"); Console.WriteLine(vienums. Key.OrderID); Console.WriteLine(vienums. Key.OrderAddresss); Console.WriteLine(vienums. Key.OrderDate); Console.WriteLine(vienums. Key.OrderTel); Console.WriteLine ("-------------- pasūtījuma detaļas ----------"); foreach (var li in item. Vērtība) { Console.WriteLine(li.DetailID); Console.WriteLine(li.Price); Console.WriteLine(li.Daudzums); Console.WriteLine(li.ProductID); } } Assert.IsNotNull(saraksts); }
[Pārbaude] public void Save() { int id = (int)m_service. GetNextID(); Pasūtījuma entītija = jauns Order() { Pasūtījuma ID = id, OrderDate = DateTime.Now.AddDays(-1), OrderAdress = "Urumqi", OrderTel = "123123" }; IList<OrderDetail> list = jauns List<OrderDetail>(); for (int i = 0; i < 3; i++) { saraksts. Add(jauns OrderDetail() { DetailID = i + 1, Cena=10+i, Daudzums = i + 100, Produkta ID = 1000 + i }); } objekts obj = m_service. Saglabāt(vienība, saraksts);
Assert.IsNotNull(obj); }
[Pārbaude] publisks anulēts atjauninājums() { var vienība = m_service. Iegūt (1);
vienība. Value[0] = jauns OrderDetail() { Produkta ID = 1000, DetailID = 1, Cena = 13.34M, Daudzums = 200.1M }; m_service. Atjauninājums(vienība); }
[Pārbaude] public void Delete() { var vienība = m_service. Iegūt (1); m_service. Dzēst(entītija); } }
}
Piezīmes: testēšanas laikā jums ir jāatsaucas uz nunit.framework rīku |
Iepriekšējo:Kopīgojiet divus CC uzbrukuma rīkus, kas ir piemēroti stresa testēšanaiNākamo:Bi Fujian izdeva atvainošanās vēstuli vietnē Weibo: Es jūtos ļoti vainīgs un skumjš
|