Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 22445|Odgovoriti: 0

[Vir] Uporaba generičnih razredov zbirk (Ilist, IDictionary) v C#

[Kopiraj povezavo]
Objavljeno na 10. 04. 2015 17:22:50 | | |

IDictionary je osnovni vmesnik za generično zbirko parov ključ/vrednost, od katerih je vsak par ključ-vrednost v objektu keyValuePair.

Vsak par mora imeti edinstven ključ. Implementacija se razlikuje glede tega, ali dovoliti, da je ključ prazna referenca (nič v Visual Basicu). Ta vrednost je lahko prazna referenca (v Visual Basicu ni nič) in ni nujno, da je edinstvena. Vmesnik IDictionary omogoča naštevanje ključev in vrednosti, ki jih vsebuje, vendar to ne pomeni posebnega vrstnega reda razvrščanja.

Ukaz foreach v jeziku C# (For Each v Visual Basicu in for each v C++) zahteva tip vsakega elementa v zbirki. Ker je vsak element IDictionary par ključ/vrednost, tip elementa ni niti tip ključa niti vrsta vrednosti. Namesto tega je to tip KeyValuePair.



Tukaj je preprost primer programa



Razred entitete:

Domena imenskega prostora
{

//订单
    javni razred Red
    {
        public int OrderID { get; set; }

        /// <summary>
        Datum naročila
        /// </summary>
        public DateTime OrderDate { get; set; }

        /// <summary>
        Naslov naročila
        /// </summary>
        public string OrderAdress { get; set; }

        /// <summary>
        Naročite telefon
        /// </summary>
        javni niz OrderTel { get; set; }
    }
}



//订单明细


Domena imenskega prostora
{
    javni razred OrderDetail
    {
        public int DetailID { get; set; }

        public int ProductID { get; set; }

        /// <summary>
        Količina
        /// </summary>
        javna decimalna količina { get; set; }

        /// <summary>
        Enotna cena
        /// </summary>
        javni decimalni Price { get; set; }
    }
}



//存放数据

z uporabo System;
z uporabo System.Collections.Generic;
z uporabo System.Linq;
z uporabo System.Text;
z uporabo domene;

Storitev imenskega prostora
{
    javni statični razred OrderStock
    {
        zasebni statični IList<Order> m_orderList = nov List<Order>(); Definirajte generično polje za List

        javni statični IList<Order> OrderList// definira generično lastnost Seznama
        {
            Dobi
            {
                vrnitev m_orderList;
            }
            Set
            {
                m_orderList = vrednost;
            }
        }

        zasebni statični IDictionary<Order, IList<OrderDetail>> m_orders = novi Dictionary<Order, <OrderDetail>IList>();

//定义了一个Dictionary的泛型字段,

        javni statični IDictionary<Order, IList<OrderDetail>> Orders/ definira generično lastnost slovarja
        {
            Dobi
            {
                vrnitev m_orders;
            }
            Set
            {
                m_orders = vrednost;
            }
        }
    }
}



Vmesniki storitev

z uporabo System;
z uporabo domene;
Storitev imenskega prostora
{
    javni vmesnik IOrderService
    {

//删除
        void Delete(Domain.Order entiteta);

       Poizvedba vse
        System.Collections.Generic.IList<Domain.Order> LoadAll();

//保存
        object Save(Domain.Order entiteta);

//更新
        void Update(entiteta domena.Order);

  Poizvedba po ID-ju
        Order Get(objekt id);

//获取下一个ID
        objekt GetNextID();
    }



Storitev imenskega prostora
{
    javni vmesnik IOrderDetailService
    {
        void Delete(System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> entiteta);
        System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> Get(object id);
        objekt GetNextDetailID(object mainID);
        objekt GetNextID();
        System.Collections.Generic.IDictionary<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> LoadAll();
        object Save(Domain.Order entiteta, System.Collections.Generic.IList<Domain.OrderDetail> podrobnosti);
        void Update(System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> entiteta);
    }
}



Izvedba storitve

z uporabo System;
z uporabo System.Collections.Generic;
z uporabo System.Linq;
z uporabo System.Text;
z uporabo domene;

Storitev imenskega prostora
{
    javni razred OrderService : IOrderService
    {
        public IList<Order> LoadAll()
        {
            var list = OrderStock.OrderList;

            seznam vračil;
        }

        javni objekt GetNextID()
        {
            int id = 1;
            if (OrderStock.OrderList.Count > 0)
            {
                id = OrderStock.OrderList.Max(m => m.OrderID) + 1;
            }
            vrni ID;
        }

        javni objekt Save(Order entiteta)
        {
            OrderStock.OrderList.Add(entiteta);

            vrni entiteto. OrderID;
        }

        javna praznina Posodobitev (entiteta naročila)
        {
            var list = OrderStock.OrderList.Where(w => w.OrderID == entiteta. OrderID);

            če (seznam. Count<Order>() > 0)
            {
                Vrstni red = seznam. First();
                OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)] = entiteta;
            }
        }

        javni red Get(objektni id)
        {
            Urejena entiteta = nič;
            var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id);
            če (seznam. Count<Order>() > 0)
            {
                Vrstni red = seznam. First();
                entiteta = OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)];
            }
            return entity;
        }

        public void Delete (Order entity)
        {
            var list = OrderStock.OrderList.Where(w => w.OrderID == entiteta. OrderID);
            če (seznam. Count<Order>() > 0)
            {
                Vrstni red = seznam. First();
                OrderStock.OrderList.Remove(order);
            }
        }
    }
}





z uporabo System;
z uporabo System.Collections.Generic;
z uporabo System.Linq;
z uporabo System.Text;
z uporabo domene;

Storitev imenskega prostora
{
    javni razred OrderDetailService : IOrderDetailService
    {
        public IDictionary<Order, IList<OrderDetail>> LoadAll()
        {
            var dic = NaročiloZaloga.Naročila;

            Return DIC;
        }

        javni objekt GetNextID()
        {
            int id = 1;
            if (OrderStock.Orders.Count > 0)
            {
                id = OrderStock.Orders.Max(m => m.Key.OrderID) + 1;
            }
            vrni ID;
        }

        javni objekt GetNextDetailID (object 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 = element. Value.Where(w => w.DetailID == (int)mainID);
                če (seznam. Count<OrderDetail>() > 0)
                {
                    id = seznam. First(). DetailID + 1;
                }
            }
            vrni ID;
        }

        javni objekt Shrani (entiteta za red,<OrderDetail> IList podrobnosti)
        {
            rezultat objekta = nič;
            če (! OrderStock.Orders.ContainsKey(entity))
            {
                OrderStock.Orders.Add(entiteta, podrobnost);
                rezultat = entiteta. OrderID;
            }
            vrni rezultat;
        }

        public void Update(KeyValuePair<Order, IList<OrderDetail>> entiteta)
        {
            if (OrderStock.Orders.ContainsKey(entity. Key))
            {
                OrderStock.Orders[entiteta. Key] = entiteta. Vrednost;
            }
        }

        public KeyValuePair<Order, IList<OrderDetail>> Get(object id)
        {
           
            KeyValuePair<Order, IList<OrderDetail>> entiteta = nova KeyValuePair<Order, IList<OrderDetail>>();
            var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)id);
            if (dic.Count<KeyValuePair<Order, IList<OrderDetail>>>() > 0)
            {
                entiteta = dic.First();
            }
            
            return entity;
        }

        public void Delete(KeyValuePair<Order, IList<OrderDetail>> entiteta)
        {
            if (OrderStock.Orders.ContainsKey(entity. Key))
            {
                OrderStock.Orders.Remove(entiteta. Key);
            }
        }
    }
}



Preizkus

z uporabo System;
z uporabo System.Collections.Generic;
z uporabo System.Linq;
z uporabo System.Text;
z uporabo NUnit.Framework;
uporaba storitve;
z uporabo domene;

Imenski prostor ServiceTest
{
    [TestFixture]
    javni razred OrderServiceTest
    {
        zasebni IOrderService m_service;

        [Postavitev]
        public void Init()
        {
            m_service = novi OrderService();
        }

        [Test]
        public void LoadAllTest()
        {
           var list= m_service. LoadAll();
           foreach (var element v seznamu)
           {
               Konzola.WriteLine(predmet. OrderID);
               Konzola.WriteLine(predmet. OrderAdress);
               Konzola.WriteLine(predmet. OrderDate);
               Konzola.WriteLine(predmet. OrderTel);
           }
           Assert.IsNotNull(list);
        }

        [Test]
        public void Save()
        {
            Entiteta Order = nov Order()
            {
                OrderID = (int)m_service. GetNextID(),
                OrderDate = DateTime.Now.AddDays(-1),
                OrderAdress = "Urumqi",
                OrderTel = "123123"
            };
            objekt = m_service. Save(entiteta);
           
            Assert.IsNotNull(obj);
        }

        [Test]
        public void Update()
        {
            Entiteta urejenega reda = m_service. Get(1);
            entiteta. OrderAdress = "Korla";
            m_service. Posodobitev(entiteta);
        }

        [Test]
        public void Delete()
        {
            Entiteta urejenega reda = m_service. Get(1);
            entiteta. OrderAdress = "Korla";
            m_service. Delete(entiteta);
        }
    }
}



z uporabo System;
z uporabo System.Collections.Generic;
z uporabo System.Linq;
z uporabo System.Text;
z uporabo NUnit.Framework;
uporaba storitve;
z uporabo domene;

Imenski prostor ServiceTest
{
    [TestFixture]
    javni razred OrderServiceDetailTest
    {
        zasebni IOrderDetailService m_service;

        [Postavitev]
        public void Init()
        {
            m_service = novi OrderDetailService();
        }

        [Test]
        public void LoadAllTest()
        {
           var list= m_service. LoadAll();
           foreach (var element v seznamu)
           {
               Console.WriteLine("-------------- Order ----------");
               Konzola.WriteLine(predmet. Key.OrderID);
               Konzola.WriteLine(predmet. Key.OrderAdress);
               Konzola.WriteLine(predmet. Key.OrderDate);
               Konzola.WriteLine(predmet. Key.OrderTel);
               Console.WriteLine("-------------- Order Detail ----------");
               foreach (var li v predmetu. Vrednost)
               {
                   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();
            Entiteta Order = nov Order()
            {
                OrderID = id,
                OrderDate = DateTime.Now.AddDays(-1),
                OrderAdress = "Urumqi",
                OrderTel = "123123"
            };
            <OrderDetail> IList list = novi List<OrderDetail>();
            za (int i = 0; Jaz < 3; i++)
            {
                seznam. Add(new OrderDetail() {
                    DetailID = i + 1,
                    Cena=10+i,
                    Količina=i+100,
                    ProductID = 1000 + i
                });
            }
            objekt = m_service. Shrani (entiteta, seznam);
           
            Assert.IsNotNull(obj);
        }

        [Test]
        public void Update()
        {
            var entiteta = m_service. Get(1);

            entiteta. Value[0] = novi OrderDetail()
            {
                ProductID = 1000,
                DetailID = 1,
                Cena = 13,34 milijona,
                Količina = 200,1M
            };
            m_service. Posodobitev(entiteta);
        }

        [Test]
        public void Delete()
        {
            var entiteta = m_service. Get(1);
            m_service. Delete(entiteta);
        }
    }
}



Opomba: Pri testiranju morate uporabiti orodje nunit.framework




Prejšnji:Delim dve orodji za CC napade, dobro za stresno testiranje
Naslednji:Bi Fujian je na Weibu objavil opravičilo: Počutim se zelo krivega in žalostnega
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com