|
|
Julkaistu 10.4.2015 17.22.50
|
|
|

IDictionary on perusrajapinta yleiselle avain/arvo-parien kokoelmalle, joista kukin on avain-arvopari keyValuePair-objektissa.
Jokaisella parilla täytyy olla ainutlaatuinen avain. Toteutus eroaa siinä, sallitaanko avain olla tyhjä viite (Nothing in Visual Basic). Tämä arvo voi olla tyhjä viite (Nothing Visual Basicissa) eikä sen tarvitse olla yksikäsitteinen. IDictionary-rajapinta mahdollistaa avainten ja arvojen luettelon, mutta tämä ei tarkoita mitään erityistä lajittelujärjestystä.
C#-kielen forach-lause (For Each Visual Basicissa ja For Each C++) vaatii kokoelman jokaisen alkion tyypin. Koska jokainen IDictionaryn alkio on avain/arvopari, alkiotyyppi ei ole avaimen tyyppi eikä arvotyyppi. Sen sijaan se on KeyValuePair-tyyppi.
Tässä on yksinkertainen esimerkkiohjelma
Yksikköluokka:
nimiavaruusverkkotunnus
{
//订单 julkisen luokan järjestys { public int OrderID { get; setti; }
/// <summary> Tilauspäivä /// </summary> public DateTime OrderDate { get; setti; }
/// <summary> Tilauksen osoite /// </summary> public string OrderAdress { get; setti; }
/// <summary> Tilaa puhelin /// </summary> public string OrderTel { get; setti; } }
}
//订单明细
nimiavaruusverkkotunnus
{ julkinen luokka JärjestysYksityiskohta { public int DetailID { get; setti; }
public int ProductID { get; setti; }
/// <summary> Määrä /// </summary> julkinen desimaali Määrä { saa; setti; }
/// <summary> Yksikköhinta /// </summary> julkinen desimaali Hinta { saa; setti; } }
}
//存放数据
käyttämällä Systemiä; käyttäen System.Collections.Generic-tiedostoa; käyttäen System.Linqia; käyttäen System.Textiä; käyttämällä Domainia;
nimiavaruuspalvelu
{ julkinen staattinen luokka OrderStock { yksityinen staattinen<Order> IList m_orderList = uusi lista<Order>(); Määrittele geneerinen kenttä Listalle
julkinen staattinen IList<Order> OrderList// määrittelee listan geneerisen ominaisuuden { Tule { palaa m_orderList; } Setti { m_orderList = arvo; } }
yksityinen staattinen IDictionary<Order, <OrderDetail>IList> m_orders = uusi sanakirja<järjestys, <OrderDetail>IList>();
//定义了一个Dictionary的泛型字段,
public static IDictionary<Order, <OrderDetail>IList> Orders/ määrittelee sanakirjan yleisen ominaisuuden { Tule { palaa m_orders; } Setti { m_orders = arvo; } } }
}
Palvelurajapinnat
käyttämällä Systemiä; käyttämällä Domainia; nimiavaruuspalvelu
{ julkinen käyttöliittymä IOrderService {
//删除 void Delete (Domain.Order entiteetti);
Kysy kaikki System.Collections.Generic.IList<Domain.Order> LoadAll();
//保存 object Save(Domain.Order-entiteet);
//更新 void Update (Domain.Order-entiteetti);
Kysely ID:n mukaan Järjestys Get(object id);
//获取下一个ID objekti GetNextID(); }
nimiavaruuspalvelu
{ julkinen käyttöliittymä 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); object GetNextDetailID(object mainID); objekti 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); }
}
Palvelun toteutuminen
käyttämällä Systemiä; käyttäen System.Collections.Generic-tiedostoa; käyttäen System.Linqia; käyttäen System.Textiä; käyttämällä Domainia;
nimiavaruuspalvelu
{ julkinen luokka Tilauspalvelu : IOrderService { julkinen IList<Order> LoadAll() { var list = OrderStock.OrderList;
paluulista; }
julkinen objekti GetNextID() { int id = 1; if (OrderStock.OrderList.Count > 0) { id = OrderStock.OrderList.Max(m => m.OrderID) + 1; } palautustunnus; }
julkinen objekti Tallenna (Järjestysyksikkö) { OrderStock.OrderList.Add(entity);
Return Entity. OrderID; }
public void Päivitys (Order entity) { var list = OrderStock.OrderList.Where(w => w.OrderID == entiteetti. OrderID);
if (lista. Count<Order>() > 0) { Järjestysjärjestys = lista. First(); OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)] = entiteetti; } }
Julkisen järjestyksen saaminen (objektitunnus) { Järjestysyksikkö = nolla; var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id); if (lista. Count<Order>() > 0) { Järjestysjärjestys = lista. First(); entity = OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)]; } palautusentiteet; }
public void Delete (Order entity) { var list = OrderStock.OrderList.Where(w => w.OrderID == entiteetti. OrderID); if (lista. Count<Order>() > 0) { Järjestysjärjestys = lista. First(); OrderStock.OrderList.Remove(order); } } }
}
käyttämällä Systemiä; käyttäen System.Collections.Generic-tiedostoa; käyttäen System.Linqia; käyttäen System.Textiä; käyttämällä Domainia;
nimiavaruuspalvelu
{ julkinen luokka OrderDetailService : IOrderDetailService { julkinen IDictionary<Order, <OrderDetail>IList> LoadAll() { var dic = Tilausvarasto. Tilaukset;
palauta dic; }
julkinen objekti GetNextID() { int id = 1; if (OrderStock.Orders.Count > 0) { id = OrderStock.Orders.Max(m => m.Key.OrderID) + 1; } palautustunnus; }
public object GetNextDetailID(object mainID) { int id = 1; var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)mainID); if (dic.Count<KeyValuePair<Order, <OrderDetail>IList>>() > 0) { var item = dic.First(); var-lista = kohde. Value.Where(w => w.DetailID == (int)mainID); if (lista. Count<OrderDetail>() > 0) { id = lista. Ensimmäinen(). DetailID + 1; } } palautustunnus; }
julkinen objekti Tallenna (Järjestys-olento,<OrderDetail> IL-yksityiskohta) { objektin tulos = nolla; jos (! OrderStock.Orders.ContainsKey(entity)) { OrderStock.Orders.Add(entiteetti, yksityiskohta); tulos = entiteetti. OrderID; } palautustulos; }
public void Update(KeyValuePair<Order, <OrderDetail>IList> entity) { jos (OrderStock.Orders.ContainsKey(entity. Avain)) { Tilausvarasto.Tilaukset[entiteetti. Avain] = olento. Arvo; } }
public KeyValuePair<Order, <OrderDetail>IList> Get(object id) {
KeyValuePair<Order, <OrderDetail>IList> entiteetti = uusi KeyValuePair<Order, <OrderDetail>IList>(); var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)id); if (dic.Count<KeyValuePair<Order, <OrderDetail>IList>>() > 0) { entity = dic.First(); }
palautusentiteet; }
public void Delete(KeyValuePair<Order, <OrderDetail>IList> entity) { jos (OrderStock.Orders.ContainsKey(entity. Avain)) { OrderStock.Orders.Remove(entity). Avain); } } }
}
Testi
käyttämällä Systemiä; käyttäen System.Collections.Generic-tiedostoa; käyttäen System.Linqia; käyttäen System.Textiä; käyttämällä NUnit.Frameworkia; käyttämällä palvelua; käyttämällä Domainia;
Nimiavaruus ServiceTest
{ [TestFixture] julkinen luokka OrderServiceTest { yksityinen IOrderService m_service;
[Valmistelu] public void Init() { m_service = uusi OrderService(); }
[Testi] public void LoadAllTest() { var list= m_service. LoadAll(); foreach (VAR-kohde listassa) { Console.WriteLine(kohde. OrderID); Console.WriteLine(kohde. OrderAdress); Console.WriteLine(kohde. OrderDate); Console.WriteLine(kohde. OrderTel); } Assert.IsNotNull(lista); }
[Testi] public void Save() { Order entity = uusi Order() { OrderID = (int)m_service. GetNextID(), OrderDate = DateTime.Now.AddDays(-1), OrderAdress = "Urumqi", OrderTel = "123123" }; objekti obj = m_service. Save(entiteetti);
Assert.IsNotNull(obj); }
[Testi] public void Päivitys() { Järjestysyksikkö = m_service. Get(1); olento. OrderAdress = "Korla"; m_service. Päivitys(entiteetti); }
[Testi] public void Delete() { Järjestysyksikkö = m_service. Get(1); olento. OrderAdress = "Korla"; m_service. Delete(entiteetti); } }
}
käyttämällä Systemiä; käyttäen System.Collections.Generic-tiedostoa; käyttäen System.Linqia; käyttäen System.Textiä; käyttämällä NUnit.Frameworkia; käyttämällä palvelua; käyttämällä Domainia;
Nimiavaruus ServiceTest
{ [TestFixture] julkinen luokka OrderServiceDetailTest { yksityinen IOrderDetailService m_service;
[Valmistelu] public void Init() { m_service = uusi OrderDetailService(); }
[Testi] public void LoadAllTest() { var list= m_service. LoadAll(); foreach (VAR-kohde listassa) { Console.WriteLine("-------------- Order ----------"); Console.WriteLine(kohde. Key.OrderID); Console.WriteLine(kohde. Avain.OrderAdress); Console.WriteLine(kohde. Key.OrderDate); Console.WriteLine(kohde. Key.OrderTel); Console.WriteLine("-------------- Järjestystiedot ----------"); foreach (var li in item. Arvo) { Console.WriteLine (li.DetailID); Console.WriteLine (li.Price); Console.WriteLine(li.Quantity); Console.WriteLine (li.ProductID); } } Assert.IsNotNull(lista); }
[Testi] public void Save() { int id = (int)m_service. GetNextID(); Order entity = uusi Order() { OrderID = id, OrderDate = DateTime.Now.AddDays(-1), OrderAdress = "Urumqi", OrderTel = "123123" }; IList<OrderDetail> list = uusi List<OrderDetail>(); kun (int i = 0; I < 3; i++) { lista. Add(new OrderDetail() { DetailID = i + 1, Price=10+i, Määrä=i+100, ProductID = 1000 + i }); } objekti obj = m_service. Save(entiteetti, lista);
Assert.IsNotNull(obj); }
[Testi] public void Päivitys() { var entity = m_service. Get(1);
olento. Value[0] = uusi OrderDetail() { ProductID = 1000, DetailID = 1, Hinta = 13,34M, Määrä = 200,1M }; m_service. Päivitys(entiteetti); }
[Testi] public void Delete() { var entity = m_service. Get(1); m_service. Delete(entiteetti); } }
}
Huomautus: Testatessa sinun tulee viitata nunit.framework-työkaluun |
Edellinen:Jaa kaksi CC-hyökkäystyökalua, hyvä stressitestaukseenSeuraava:Bi Fujian julkaisi anteeksipyyntökirjeen Weibossa: Tunnen suurta syyllisyyttä ja surua
|