|
|
Yayınlandı 10.04.2015 17:22:50
|
|
|

IDictionary, keyValuePair nesnesinde her biri bir anahtar-değer çifti olan genel bir anahtar/değer çifti koleksiyonunun temel arayüzüdür.
Her çiftin kendine özgü bir anahtarı olmalıdır. Uygulama, anahtarın boş bir referans olarak kullanılmasına izin verilip verilmemesi konusunda farklılık gösterir (Visual Basic'te Nothing Not). Bu değer boş bir referans olabilir (Visual Basic'te Hiç) ve benzersiz olmak zorunda değildir. IDictionary arayüzü, içerdiği anahtarların ve değerlerin sayımına olanak tanır, ancak bu belirli bir sıralama sırası anlamına gelmez.
C# dilindeki foreach ifadesi (Visual Basic'te Her biri için ve C++'da her biri için) koleksiyondaki her elemanın türünü gerektirir. IDictionary'nin her elemanı bir anahtar/değer çifti olduğundan, eleman türü ne bir anahtar türü ne de değer türüdür. Bunun yerine, KeyValuePair türü.
İşte basit bir örnek program
Varlık sınıfı:
isim alanı Alan
{
//订单 kamu sınıfı Düzen { public int OrderID { get; set; }
/// <summary> Sipariş tarihi /// </summary> public DateTime OrderDate { get; set; }
/// <summary> Sipariş adresi /// </summary> public string OrderAdress { get; set; }
/// <summary> Telefon siparişi ver /// </summary> public string OrderTel { get; set; } }
}
//订单明细
isim alanı Alan
{ halk sınıfı OrderDetail { public int DetailID { get; set; }
public int ProductID { get; set; }
/// <summary> Miktar /// </summary> public ondalık Miktar { get; set; }
/// <summary> Birim fiyat /// </summary> public ondalık Fiyat { get; set; } }
}
//存放数据
System kullanmak; System.Collections.Generic kullanılarak; System.Linq kullanarak; System.Text kullanarak; Domain kullanmak;
isim alanı Hizmeti
{ public statik sınıfı OrderStock { özel statik<Order> IList m_orderList = yeni List<Order>(); Bir Liste için genel bir alan tanımlayın
public statik IList<Order> OrderList// bir List'in genel bir özelliğini tanımlar { Al { m_orderList dön; } Set { m_orderList = değer; } }
özel statik IDictionary<Order, <OrderDetail>IList> m_orders = yeni Sözlük<Düzen, <OrderDetail>IList>();
//定义了一个Dictionary的泛型字段,
public static IDictionary<Order, <OrderDetail>IList> Orders/ bir sözlüğün genel bir özelliğini tanımlar { Al { m_orders dönüş; } Set { m_orders = değer; } } }
}
Hizmet arayüzleri
System kullanmak; Domain kullanmak; isim alanı Hizmeti
{ public interface IOrderService {
//删除 void Delete(Domain.Order varlığı);
Hepsini sorgulayın System.Collections.Generic.IList<Domain.Order> LoadAll();
//保存 nesne Save(Domain.Order varlığı);
//更新 void Update(Domain.Order varlığı);
ID ile sorgulama Sıra Get(nesne kimliği);
//获取下一个ID nesne GetNextID(); }
isim alanı Hizmeti
{ public interface 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); nesne 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); }
}
Hizmet gerçekleştirme
System kullanmak; System.Collections.Generic kullanılarak; System.Linq kullanarak; System.Text kullanarak; Domain kullanmak;
isim alanı Hizmeti
{ public class OrderService : IOrderService { public IList<Order> LoadAll() { var list = OrderStock.OrderList;
dönüş listesi; }
public object GetNextID() { int id = 1; if (OrderStock.OrderList.Count > 0) { id = OrderStock.OrderList.Max(m => m.OrderID) + 1; } Return ID; }
public object Save(Order entity) { OrderStock.OrderList.Add(entity);
Varlık geri dönmek. Sipariş Kimliği; }
public void Güncelleme(Order entity) { var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID);
if (liste. Count<Order>() > 0) { Sıra sırası = liste. Birinci(); OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)] = varlık; } }
Kamu Düzeni Alın(nesne kimliği) { Sipariş varlığı = null; var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id); if (liste. Count<Order>() > 0) { Sıra sırası = liste. Birinci(); varlık = OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)]; } return varlık; }
public void Sil(Order entity) { var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID); if (liste. Count<Order>() > 0) { Sıra sırası = liste. Birinci(); SiparişStok.SiparişListesi.Kaldırma(emir); } } }
}
System kullanmak; System.Collections.Generic kullanılarak; System.Linq kullanarak; System.Text kullanarak; Domain kullanmak;
isim alanı Hizmeti
{ public class OrderDetailService : IOrderDetailService { public IDictionary<Order, <OrderDetail>IList> LoadAll() { var dic = SiparişStok.Emirler;
DİK'yi Geri DİT; }
public object GetNextID() { int id = 1; if (OrderStock.Orders.Count > 0) { id = OrderStock.Orders.Max(m => m.Key.OrderID) + 1; } Return ID; }
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 list = öğe. Value.Where(w => w.DetailID == (int)mainID); if (liste. Count<OrderDetail>() > 0) { id = liste. Birinci(). Detay Kimliği + 1; } } Return ID; }
public object Save(Order entity, IL<OrderDetail> detayı) { nesne sonucu = null; if (! OrderStock.Orders.ContainsKey(entity)) { OrderStock.Orders.Add(varlık, detay); sonuç = varlık. Sipariş Kimliği; } geri dönüş sonucu; }
public void Update(KeyValuePair<Order, <OrderDetail>IList> entity) { if (OrderStock.Orders.ContainsKey(entity. Anahtar)) { SiparişStok.Sipariş[varlık. Anahtar] = varlık. Değer; } }
public KeyValuePair<Order, <OrderDetail>IList> Get(object id) {
KeyValuePair<Order, <OrderDetail>IList> entity = yeni KeyValuePair<Order, <OrderDetail>IList>(); var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)id); if (dic.Count<KeyValuePair<Order, <OrderDetail>IList>>() > 0) { varlık = dic. Birinci(); }
return varlık; }
public void Delete(KeyValuePair<Order, <OrderDetail>IList> entity) { if (OrderStock.Orders.ContainsKey(entity. Anahtar)) { SiparişStok.Emir.Kaldır(varlık. Key); } } }
}
Test
System kullanmak; System.Collections.Generic kullanılarak; System.Linq kullanarak; System.Text kullanarak; NUnit.Framework kullanılarak; Hizmet kullanmak; Domain kullanmak;
isim alanı ServiceTest
{ [TestFixture] public class OrderServiceTest { özel IOrderService m_service;
[Kurulum] public void Init() { m_service = yeni OrderService(); }
[Test] public void LoadAllTest() { var list= m_service. LoadAll(); foreach (var öğesi listede) { Console.WriteLine(item. OrderID); Console.WriteLine(item. OrderAdres); Console.WriteLine(item. Sipariş Tarihi); Console.WriteLine(item. OrderTel); } assert.IsNotNull(list); }
[Test] public void Save() { Sipariş varlığı = yeni Emir() { OrderID = (int)m_service. GetNextID(), OrderDate = DateTime.Now.AddDays(-1), OrderAdres = "Urumçi", OrderTel = "123123" }; nesne obj = m_service. Save(varlık);
Assert.IsNotNull(obj); }
[Test] public void Güncelleme() { Sipariş varlığı = m_service. Get(1); varlık. OrderAdress = "Korla"; m_service. Güncelleme(varlık); }
[Test] public void Delete() { Sipariş varlığı = m_service. Get(1); varlık. OrderAdress = "Korla"; m_service. Delete(varlık); } }
}
System kullanmak; System.Collections.Generic kullanılarak; System.Linq kullanarak; System.Text kullanarak; NUnit.Framework kullanılarak; Hizmet kullanmak; Domain kullanmak;
isim alanı ServiceTest
{ [TestFixture] public class OrderServiceDetailTest { özel IOrderDetailService m_service;
[Kurulum] public void Init() { m_service = yeni OrderDetailService(); }
[Test] public void LoadAllTest() { var list= m_service. LoadAll(); foreach (var öğesi listede) { Console.WriteLine("-------------- Order ----------"); Console.WriteLine(item. Key.OrderID); Console.WriteLine(item. Key.OrderAdress); Console.WriteLine(item. Key.OrderDate); Console.WriteLine(item. Key.OrderTel); Console.WriteLine("-------------- Order Detail ----------"); foreach (var li in item. Değer) { 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(); Sipariş varlığı = yeni Emir() { OrderID = id, OrderDate = DateTime.Now.AddDays(-1), OrderAdres = "Urumçi", OrderTel = "123123" }; IList<OrderDetail> list = yeni List<OrderDetail>(); için (int i = 0; I < 3; i++) { liste. add(new OrderDetail() { DetailID = i + 1, Price=10+i, Nicelik=i+100, ProductID = 1000 + i }); } nesne obj = m_service. kaydet(varlık, liste);
Assert.IsNotNull(obj); }
[Test] public void Güncelleme() { var entity = m_service. Get(1);
varlık. Value[0] = yeni OrderDetail() { ProductID = 1000, Detay ID = 1, Fiyat = 13.34M, Miktar = 200,1M }; m_service. Güncelleme(varlık); }
[Test] public void Delete() { var entity = m_service. Get(1); m_service. Delete(varlık); } }
}
Not: Test yaparken nunit.framework aracına başvurmanız gerekir |
Önceki:İki CC saldırı aracını paylaşın, stres testi için iyiÖnümüzdeki:Bi Fujian Weibo'da bir özür mektubu yayınladı: Kendimi çok suçlu ve üzgün hissediyorum
|