Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 22445|Svar: 0

[Kilde] Brugen af generiske samlingsklasser (Ilist, IDictionary) i C#

[Kopier link]
Opslået på 10/04/2015 17.22.50 | | |

IDictionary er basisgrænsefladen for en generisk samling af nøgle/værdi-par, hvor hver er et nøgle-værdi-par i keyValuePair-objektet.

Hvert par skal have en unik nøgle. Implementeringen adskiller sig i, om nøglen skal være en tom reference (Nothing in Visual Basic). Denne værdi kan være en tom reference (intet i Visual Basic) og behøver ikke være unik. IDictionary-grænsefladen tillader en opremsning af de nøgler og værdier, den indeholder, men dette indebærer ikke nogen specifik sorteringsrækkefølge.

Foreach-sætningen i C#-sproget (For Each i Visual Basic og for each i C++) kræver typen af hvert element i samlingen. Da hvert element i IDictionary er et nøgle/værdi-par, er elementtypen hverken en type af en nøgle eller en type af værdi. I stedet er det en KeyValuePair-type.



Her er et simpelt eksempelprogram



Entitetsklasse:

navnerum Domæne
{

//订单
    offentlig klasseorden
    {
        public int OrderID { get; sat; }

        /// <summary>
        Bestillingsdato
        /// </summary>
        public DateTime OrderDate { get; sat; }

        /// <summary>
        Ordreadresse
        /// </summary>
        public string OrderAdress { get; sat; }

        /// <summary>
        Bestil telefon
        /// </summary>
        public string OrderTel { get; sat; }
    }
}



//订单明细


navnerum Domæne
{
    offentlig klasse OrderDetail
    {
        public int DetailID { get; sat; }

        public int ProductID { get; sat; }

        /// <summary>
        Mængde
        /// </summary>
        offentlig decimal Mængde { get; sat; }

        /// <summary>
        Enhedspris
        /// </summary>
        offentlig decimal Price { get; sat; }
    }
}



//存放数据

ved brug af System;
ved brug af System.Collections.Generic;
ved brug af System.Linq;
ved brug af System.Text;
ved brug af Domain;

navnerumstjeneste
{
    offentlig statisk klasse OrderStock
    {
        privat statisk IList<Order> m_orderList = ny Liste<Order>(); Definér et generisk felt for en liste

        offentlig statisk<Order> IList OrderList// definerer en generisk egenskab ved en liste
        {
            Få fat
            {
                vend tilbage m_orderList;
            }
            Sæt
            {
                m_orderList = værdi;
            }
        }

        privat statisk IDictionary<Order, IList<OrderDetail>> m_orders = ny Dictionary<Order, IList<OrderDetail>>();

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

        offentlig statisk IDictionary<Order, IList<OrderDetail>> Orders/ definerer en generisk egenskab ved en ordbog
        {
            Få fat
            {
                vend tilbage m_orders;
            }
            Sæt
            {
                m_orders = værdi;
            }
        }
    }
}



Servicegrænseflader

ved brug af System;
ved brug af Domain;
navnerumstjeneste
{
    offentlig grænseflade IOrderService
    {

//删除
        void Delete (Domain.Order-entitet);

       Forespørg alle
        System.Collections.Generic.IList<Domain.Order> LoadAll();

//保存
        objekt Save(Domain.Order-entitet);

//更新
        void Opdatering (Domain.Order-entitet);

  Forespørgsel efter ID
        Order Get (objekt-id);

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



navnerumstjeneste
{
    offentlig grænseflade IOrderDetailService
    {
        void Delete(System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> entitet);
        System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> Get(object id);
        objekt GetNextDetailID (objekt mainID);
        objekt GetNextID();
        System.Collections.Generic.IDictionary<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> LoadAll();
        objekt 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>> entitet);
    }
}



Servicerealisering

ved brug af System;
ved brug af System.Collections.Generic;
ved brug af System.Linq;
ved brug af System.Text;
ved brug af Domain;

navnerumstjeneste
{
    offentlig klasse OrderService : IOrderService
    {
        offentlig IList<Order> LoadAll()
        {
            var list = OrderStock.OrderList;

            tilbagevendende liste;
        }

        offentligt objekt GetNextID()
        {
            int id = 1;
            hvis (OrderStock.OrderList.Count > 0)
            {
                id = OrderStock.OrderList.Max(m => m.OrderID) + 1;
            }
            Return ID;
        }

        offentligt objekt Gem (Ordre-entitet)
        {
            OrderStock.OrderList.Add(entity);

            Return-enhed. OrderID;
        }

        offentlig void Opdatering (Ordre-enhed)
        {
            var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID);

            hvis (liste. Count<Order>() > 0)
            {
                Rækkefølge = liste. First();
                OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)] = enhed;
            }
        }

        public order get(objekt-id)
        {
            Ordensenhed = null;
            var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id);
            hvis (liste. Count<Order>() > 0)
            {
                Rækkefølge = liste. First();
                enhed = OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)];
            }
            returenhed;
        }

        offentlig ugyldighed Slet (Ordreenhed)
        {
            var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID);
            hvis (liste. Count<Order>() > 0)
            {
                Rækkefølge = liste. First();
                OrderStock.OrderList.Remove(order);
            }
        }
    }
}





ved brug af System;
ved brug af System.Collections.Generic;
ved brug af System.Linq;
ved brug af System.Text;
ved brug af Domain;

navnerumstjeneste
{
    offentlig klasse OrderDetailService : IOrderDetailService
    {
        offentlig IDictionary<Order, IList<OrderDetail>> LoadAll()
        {
            var dic = OrderStock.Orders;

            returnér DIC;
        }

        offentligt objekt GetNextID()
        {
            int id = 1;
            hvis (OrderStock.Orders.Count > 0)
            {
                id = OrderStock.Orders.Max(m => m.Key.OrderID) + 1;
            }
            Return ID;
        }

        offentligt objekt GetNextDetailID (objekt mainID)
        {
            int id = 1;
            var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)mainID);
            hvis (dic.Count<KeyValuePair<Order, IList<OrderDetail>>>() > 0)
            {
                var-element = dic.First();
                Varlist = Element. Value.Where(w => w.DetailID == (int)mainID);
                hvis (liste. Count<OrderDetail>() > 0)
                {
                    id = liste. Først(). DetailID + 1;
                }
            }
            Return ID;
        }

        public object Gem (Order entity, IList<OrderDetail> detail)
        {
            objektresultat = null;
            hvis (! OrderStock.Orders.ContainsKey(entity))
            {
                OrderStock.Orders.Add(entity, detail);
                resultat = entitet. OrderID;
            }
            returneringsresultat;
        }

        public void Update(KeyValuePair<Order, IList<OrderDetail>> entity)
        {
            hvis (OrderStock.Orders.ContainsKey(entity. Nøgle))
            {
                OrdreLager.Ordrer[entitet. nøgle] = entitet. Værdi;
            }
        }

        public KeyValuePair<Order, IList<OrderDetail>> Get(object id)
        {
           
            KeyValuePair<Order, IList<OrderDetail>> entity = ny KeyValuePair<Order, IList<OrderDetail>>();
            var dic = OrderStock.Orders.Where(w => w.Key.OrderID == (int)id);
            hvis (dic.Count<KeyValuePair<Order, IList<OrderDetail>>>() > 0)
            {
                entitet = dic.First();
            }
            
            returenhed;
        }

        public void Delete(KeyValuePair<Order, IList<OrderDetail>> entity)
        {
            hvis (OrderStock.Orders.ContainsKey(entity. Nøgle))
            {
                OrdreLager.Ordrer.Fjern(entitet. Nøgle);
            }
        }
    }
}



Test

ved brug af System;
ved brug af System.Collections.Generic;
ved brug af System.Linq;
ved brug af System.Text;
ved brug af NUnit.Framework;
brug af Service;
ved brug af Domain;

navnerum ServiceTest
{
    [TestFixture]
    offentlig klasse OrderServiceTest
    {
        privat IOrderService m_service;

        [Opsætning]
        offentlig tomrum Init()
        {
            m_service = ny OrderService();
        }

        [Test]
        offentlig void LoadAllTest()
        {
           var list= m_service. LoadAll();
           Foreach (VAR-element i listen)
           {
               Console.WriteLine(item. OrderID);
               Console.WriteLine(item. OrderAdresse);
               Console.WriteLine(item. OrderDate);
               Console.WriteLine(item. OrderTel);
           }
           Assert.IsNotNull(list);
        }

        [Test]
        offentlig tomrum Save()
        {
            Order-enhed = ny Order()
            {
                OrderID = (int)m_service. GetNextID(),
                OrderDate = DateTime.Now.AddDays(-1),
                OrderAdress = "Urumqi",
                OrderTel = "123123"
            };
            objekt obj = m_service. Save(entitet);
           
            Assert.IsNotNull(obj);
        }

        [Test]
        public void Opdatering()
        {
            Ordensenhed = m_service. Get(1);
            entitet. OrderAdress = "Korla";
            m_service. Opdatering(entitet);
        }

        [Test]
        offentlig tomhed Slet()
        {
            Ordensenhed = m_service. Get(1);
            entitet. OrderAdress = "Korla";
            m_service. Delete(entity);
        }
    }
}



ved brug af System;
ved brug af System.Collections.Generic;
ved brug af System.Linq;
ved brug af System.Text;
ved brug af NUnit.Framework;
brug af Service;
ved brug af Domain;

navnerum ServiceTest
{
    [TestFixture]
    offentlig klasse OrderServiceDetailTest
    {
        privat IOrderDetailService m_service;

        [Opsætning]
        offentlig tomrum Init()
        {
            m_service = ny OrderDetailService();
        }

        [Test]
        offentlig void LoadAllTest()
        {
           var list= m_service. LoadAll();
           Foreach (VAR-element i listen)
           {
               Console.WriteLine("-------------- Order ----------");
               Console.WriteLine(item. Key.OrderID);
               Console.WriteLine(item. Key.OrderAddress);
               Console.WriteLine(item. Key.OrderDate);
               Console.WriteLine(item. Key.OrderTel);
               Console.WriteLine("-------------- Ordredetalje ----------");
               foreach (var li in item. Værdi)
               {
                   Console.WriteLine(li.DetailID);
                   Console.WriteLine (li.Price);
                   Console.WriteLine(li.Quantity);
                   Console.WriteLine(li.ProductID);
               }
           }
           Assert.IsNotNull(list);
        }

        [Test]
        offentlig tomrum Save()
        {
            int id = (int)m_service. GetNextID();
            Order-enhed = ny Order()
            {
                OrderID = id,
                OrderDate = DateTime.Now.AddDays(-1),
                OrderAdress = "Urumqi",
                OrderTel = "123123"
            };
            IList<OrderDetail> list = ny Liste<OrderDetail>();
            for (int i = 0; Jeg < 3; i++)
            {
                liste. Add(new OrderDetail() {
                    DetailID = i + 1,
                    Price=10+i,
                    Kvantitet=i+100,
                    ProductID = 1000 + i
                });
            }
            objekt obj = m_service. Gem (entitet, liste);
           
            Assert.IsNotNull(obj);
        }

        [Test]
        public void Opdatering()
        {
            var entity = m_service. Get(1);

            entitet. Value[0] = ny OrderDetail()
            {
                ProductID = 1000,
                DetailID = 1,
                Pris = 13,34 mio.
                Mængde = 200,1 mio.
            };
            m_service. Opdatering(entitet);
        }

        [Test]
        offentlig tomhed Slet()
        {
            var entity = m_service. Get(1);
            m_service. Delete(entity);
        }
    }
}



Bemærk: Du skal referere til nunit.framework-værktøjet, når du tester




Tidligere:Del to CC-angrebsværktøjer, gode til stresstest
Næste:Bi Fujian udsendte et undskyldningsbrev på Weibo: Jeg føler mig meget skyldig og trist
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com