|
|
Δημοσιεύτηκε στις 10/4/2015 5:22:50 μ.μ.
|
|
|

Το IDictionary είναι η βασική διεπαφή για μια γενική συλλογή ζευγών κλειδιών/τιμών, καθένα από τα οποία είναι ένα ζεύγος κλειδιού-τιμής στο αντικείμενο keyValuePair.
Κάθε ζευγάρι πρέπει να έχει ένα μοναδικό κλειδί. Η υλοποίηση διαφέρει ως προς το αν θα επιτρέπεται ή όχι στο κλειδί να είναι κενή αναφορά (Τίποτα στη Visual Basic). Αυτή η τιμή μπορεί να είναι μια κενή αναφορά (Τίποτα στη Visual Basic) και δεν χρειάζεται να είναι μοναδική. Η διεπαφή IDictionary επιτρέπει την απαρίθμηση των κλειδιών και των τιμών που περιέχει, αλλά αυτό δεν συνεπάγεται κάποια συγκεκριμένη σειρά ταξινόμησης.
Η πρόταση foreach στη γλώσσα C# (Για κάθε στη Visual Basic και για κάθε στη C++) απαιτεί τον τύπο κάθε στοιχείου στη συλλογή. Δεδομένου ότι κάθε στοιχείο του IDictionary είναι ένα ζεύγος κλειδιού/τιμής, ο τύπος στοιχείου δεν είναι ούτε τύπος κλειδιού ούτε τύπος τιμής. Αντίθετα, είναι ένας τύπος KeyValuePair.
Εδώ είναι ένα απλό παράδειγμα προγράμματος
Κατηγορία οντότητας:
Τομέας χώρου ονομάτων
{
//订单 Τάξη δημόσιας τάξης { public int OrderID { get; σειρά; }
/// <summary> Ημερομηνία παραγγελίας /// </summary> δημόσιο DateTime OrderDate { get; σειρά; }
/// <summary> Διεύθυνση παραγγελίας /// </summary> δημόσια συμβολοσειρά OrderAdress { get; σειρά; }
/// <summary> Παραγγελία τηλεφώνου /// </summary> δημόσια συμβολοσειρά OrderTel { get; σειρά; } }
}
//订单明细
Τομέας χώρου ονομάτων
{ Παραγγελία δημόσιας τάξηςΛεπτομέρεια { public int DetailID { get; σειρά; }
public int ProductID { get; σειρά; }
/// <summary> Ποσότητα /// </summary> δημόσιο δεκαδικό Ποσότητα { πάρτε; σειρά; }
/// <summary> Τιμή μονάδος /// </summary> δημόσιο δεκαδικό Τιμή { πάρτε; σειρά; } }
}
//存放数据
χρησιμοποιώντας το Σύστημα. χρησιμοποιώντας το System.Collections.Generic. χρησιμοποιώντας το System.Linq. χρησιμοποιώντας το System.Text. χρησιμοποιώντας τον τομέα.
Υπηρεσία χώρου ονομάτων
{ δημόσια στατική κλάση OrderStock { ιδιωτικό στατικό IList<Order> m_orderList = νέα List<Order>(); Ορισμός γενικού πεδίου για μια λίστα
δημόσια στατική IList<Order> OrderList// ορίζει μια γενική ιδιότητα μιας λίστας { παίρνω { επιστροφή m_orderList? } σετ { m_orderList = τιμή; } }
ιδιωτικό στατικό IDictionary<Order, IList<OrderDetail>> m_orders = νέο Λεξικό<Order, IList<OrderDetail>>();
//定义了一个Dictionary的泛型字段,
δημόσιο στατικό IDictionary<Order, IList<OrderDetail>> Orders/ ορίζει μια γενική ιδιότητα ενός λεξικού { παίρνω { επιστροφή m_orders? } σετ { m_orders = τιμή; } } }
}
Διεπαφές υπηρεσιών
χρησιμοποιώντας το Σύστημα. χρησιμοποιώντας τον τομέα. Υπηρεσία χώρου ονομάτων
{ δημόσια διεπαφή IOrderService {
//删除 void Delete(οντότητα Domain.Order);
Ερώτηση όλων System.Collections.Generic.IList<Domain.Order> LoadAll();
//保存 αντικείμενο Save(οντότητα Domain.Order);
//更新 void Update(οντότητα Domain.Order);
Ερώτημα με αναγνωριστικό Παραγγελία Get(αναγνωριστικό αντικειμένου);
//获取下一个ID αντικείμενο GetNextID(); }
Υπηρεσία χώρου ονομάτων
{ δημόσια διεπαφή IOrderDetailService { void Delete(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(αναγνωριστικό αντικειμένου); αντικείμενο GetNextDetailID(κύριο αναγνωριστικό αντικειμένου); αντικείμενο GetNextID(); System.Collections.Generic.IDictionary<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> LoadAll(); αντικείμενο Save(οντότητα Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail> λεπτομέρεια); void Update(System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> οντότητα); }
}
Υλοποίηση υπηρεσιών
χρησιμοποιώντας το Σύστημα. χρησιμοποιώντας το System.Collections.Generic. χρησιμοποιώντας το System.Linq. χρησιμοποιώντας το System.Text. χρησιμοποιώντας τον τομέα.
Υπηρεσία χώρου ονομάτων
{ Υπηρεσία Παραγγελίας Δημόσιας Τάξης: IOrderService { δημόσιο IList<Order> LoadAll() { var list = OrderStock.OrderList;
λίστα επιστροφής? }
δημόσιο αντικείμενο GetNextID() { int id = 1; αν (OrderStock.OrderList.Count > 0) { id = OrderStock.OrderList.Max(m => m.OrderID) + 1; } αναγνωριστικό επιστροφής; }
δημόσιο αντικείμενο Save(Οντότητα παραγγελίας) { OrderStock.OrderList.Add(οντότητα);
οντότητα επιστροφής. Αναγνωριστικό παραγγελίας; }
Ενημέρωση δημόσιου κενού (Οντότητα παραγγελίας) { var list = OrderStock.OrderList.Where(w => w.OrderID == οντότητα. Αναγνωριστικό παραγγελίας);
Αν (λίστα. Πλήθος<Order>() > 0) { Σειρά παραγγελίας = λίστα. Πρώτη(); OrderStock.OrderList[OrderStock.OrderList.IndexOf(παραγγελία)] = οντότητα; } }
public Order Get(αναγνωριστικό αντικειμένου) { Οντότητα παραγγελίας = null; var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id); Αν (λίστα. Πλήθος<Order>() > 0) { Σειρά παραγγελίας = λίστα. Πρώτη(); οντότητα = OrderStock.OrderList[OrderStock.OrderList.IndexOf(παραγγελία)]; } οντότητα επιστροφής· }
δημόσιο κενό Διαγραφή (Παραγγελία οντότητας) { var list = OrderStock.OrderList.Where(w => w.OrderID == οντότητα. Αναγνωριστικό παραγγελίας); Αν (λίστα. Πλήθος<Order>() > 0) { Σειρά παραγγελίας = λίστα. Πρώτη(); OrderStock.OrderList.Remove(παραγγελία); } } }
}
χρησιμοποιώντας το Σύστημα. χρησιμοποιώντας το System.Collections.Generic. χρησιμοποιώντας το System.Linq. χρησιμοποιώντας το System.Text. χρησιμοποιώντας τον τομέα.
Υπηρεσία χώρου ονομάτων
{ δημόσια τάξη OrderDetailService : IOrderDetailService { δημόσια ταυτότηταΛεξικό<Παραγγελία, IList<OrderDetail>> LoadAll() { var dic = OrderStock.Orders;
επιστροφή dic? }
δημόσιο αντικείμενο GetNextID() { int id = 1; αν (OrderStock.Orders.Count > 0) { id = OrderStock.Orders.Max(m => m.Key.OrderID) + 1; } αναγνωριστικό επιστροφής; }
δημόσιο αντικείμενο GetNextDetailID(κύριο αναγνωριστικό αντικειμένου) { 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 = στοιχείο. Τιμή.Where(w => w.DetailID == (int)mainID); Αν (λίστα. Αριθμός<OrderDetail>() > 0) { id = λίστα. First(). Αναγνωριστικό λεπτομέρειας + 1; } } αναγνωριστικό επιστροφής; }
δημόσιο αντικείμενο Save(Οντότητα παραγγελίας, λεπτομέρεια IList<OrderDetail>) { αποτέλεσμα αντικειμένου = null; αν (! OrderStock.Orders.ContainsKey(οντότητα)) { OrderStock.Orders.Add(οντότητα, λεπτομέρεια); αποτέλεσμα = οντότητα. Αναγνωριστικό παραγγελίας; } αποτέλεσμα επιστροφής? }
public void Update(KeyValuePair<Order, IList<OrderDetail>> entity) { if (OrderStock.Orders.ContainsKey(entity. Κλειδί)) { OrderStock.Orders[οντότητα. Key] = οντότητα. αξία; } }
public KeyValuePair<Order, IList<OrderDetail>> Get(αναγνωριστικό αντικειμένου) {
KeyValuePair<Order, IList<OrderDetail>> οντότητα = νέο KeyValuePair<Order, IList<OrderDetail>>(); var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)id); if (dic.Count<KeyValuePair<Order, IList<OrderDetail>>>() > 0) { οντότητα = dic.First(); }
οντότητα επιστροφής· }
δημόσιο κενό Delete(KeyValuePair<Order, IList<OrderDetail>> οντότητα) { if (OrderStock.Orders.ContainsKey(entity. Κλειδί)) { OrderStock.Orders.Remove(entity. Κλειδί); } } }
}
Δοκιμή
χρησιμοποιώντας το Σύστημα. χρησιμοποιώντας το System.Collections.Generic. χρησιμοποιώντας το System.Linq. χρησιμοποιώντας το System.Text. χρησιμοποιώντας το NUnit.Framework. χρήση της Υπηρεσίας. χρησιμοποιώντας τον τομέα.
χώρος ονομάτων ServiceTest
{ [Εξάρτημα δοκιμής] δημόσια τάξη OrderServiceTest { ιδιωτικό IOrderService m_service;
[Ρύθμιση] δημόσιο κενό Init() { m_service = νέα OrderService(); }
[Δοκιμή] δημόσιο κενό LoadAllTest() { var list= m_service. LoadAll(); foreach (στοιχείο var στη λίστα) { Console.WriteLine(item. Αναγνωριστικό παραγγελίας); Console.WriteLine(item. Διεύθυνση Παραγγελίας); Console.WriteLine(item. OrderDate); Console.WriteLine(item. ΠαραγγελίαΤηλ); } Assert.IsNotNull(λίστα); }
[Δοκιμή] δημόσιο κενό Save() { Οντότητα παραγγελίας = new Order() { ΚωδΠαραγγελίας = (int)m_service. GetNextID(), ΗμερομηνίαΠαραγγελίας = ΗμερομηνίαΏρα.Τώρα.AddDays(-1), Διεύθυνση Παραγγελίας = "Urumqi", OrderTel = "123123" }; αντικείμενο obj = m_service. Save(οντότητα);
Assert.IsNotNull(obj); }
[Δοκιμή] δημόσιο κενό Ενημέρωση() { Οντότητα παραγγελίας = m_service. Πάρτε(1); οντότητα. Διεύθυνση Παραγγελίας = "Korla"; m_service. Ενημέρωση(οντότητα); }
[Δοκιμή] δημόσιο κενό Delete() { Οντότητα παραγγελίας = m_service. Πάρτε(1); οντότητα. Διεύθυνση Παραγγελίας = "Korla"; m_service. Delete(οντότητα); } }
}
χρησιμοποιώντας το Σύστημα. χρησιμοποιώντας το System.Collections.Generic. χρησιμοποιώντας το System.Linq. χρησιμοποιώντας το System.Text. χρησιμοποιώντας το NUnit.Framework. χρήση της Υπηρεσίας. χρησιμοποιώντας τον τομέα.
χώρος ονομάτων ServiceTest
{ [Εξάρτημα δοκιμής] δημόσιας τάξης OrderServiceDetailTest { ιδιωτικό IOrderDetailService m_service;
[Ρύθμιση] δημόσιο κενό Init() { m_service = νέα OrderDetailService(); }
[Δοκιμή] δημόσιο κενό LoadAllTest() { var list= m_service. LoadAll(); foreach (στοιχείο var στη λίστα) { Console.WriteLine("-------------- Παραγγελία ----------"); Console.WriteLine(item. Key.OrderID); Console.WriteLine(item. Key.OrderAdress); Console.WriteLine(item. Key.OrderDate); Console.WriteLine(item. Key.OrderTel); Console.WriteLine("-------------- Λεπτομέρειες παραγγελίας ----------"); foreach (var li στο στοιχείο. Αξία) { Console.WriteLine(li.DetailID); Console.WriteLine(li.Price); Console.WriteLine(li.Quantity); Console.WriteLine(li.ProductID); } } Assert.IsNotNull(λίστα); }
[Δοκιμή] δημόσιο κενό Save() { int id = (int)m_service. GetNextID(); Οντότητα παραγγελίας = new Order() { ΚωδΠαραγγελίας = αναγνωριστικό, ΗμερομηνίαΠαραγγελίας = ΗμερομηνίαΏρα.Τώρα.AddDays(-1), Διεύθυνση Παραγγελίας = "Urumqi", OrderTel = "123123" }; IList<OrderDetail> list = νέα List<OrderDetail>(); για (int i = 0; i < 3; i++) { λίστα. Add(new OrderDetail() { DetailID = i + 1, Τιμή=10+i, Ποσότητα=i+100, ΚωδΠροϊόντος = 1000 + i }); } αντικείμενο obj = m_service. Save(οντότητα; λίστα);
Assert.IsNotNull(obj); }
[Δοκιμή] δημόσιο κενό Ενημέρωση() { var οντότητα = m_service. Πάρτε(1);
οντότητα. Value[0] = νέα OrderDetail() { ΚωδΠροϊόντος = 1000, Αναγνωριστικό λεπτομέρειας = 1, Τιμή = 13,34 εκατ., Ποσότητα = 200.1M }; m_service. Ενημέρωση(οντότητα); }
[Δοκιμή] δημόσιο κενό Delete() { var οντότητα = m_service. Πάρτε(1); m_service. Delete(οντότητα); } }
}
Σημείωση: Πρέπει να αναφέρετε το εργαλείο nunit.framework κατά τη δοκιμή |
Προηγούμενος:Μοιραστείτε δύο εργαλεία επίθεσης CC, καλά για stress testΕπόμενος:Ο Bi Fujian εξέδωσε επιστολή συγγνώμης στο Weibo: Νιώθω πολύ ένοχος και λυπημένος
|