Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 22445|Svare: 0

[Kilde] Bruken av generiske samlingsklasser (Ilist, IDictionary) i C#

[Kopier lenke]
Publisert på 10.04.2015 17:22:50 | | |

IDictionary er basisgrensesnittet for en generisk samling av nøkkel/verdi-par, hvor hvert par er nøkkel-verdi i keyValuePair-objektet.

Hvert par må ha en unik nøkkel. Implementeringen varierer i om nøkkelen skal være en tom referanse eller ikke (Ingenting i Visual Basic). Denne verdien kan være en tom referanse (ingenting i Visual Basic) og trenger ikke å være unik. IDictionary-grensesnittet tillater en oppramsing av nøklene og verdiene det inneholder, men dette innebærer ingen spesifikk sorteringsrekkefølge.

Foreach-setningen i C#-språket (For Each i Visual Basic og for each i C++) krever typen til hvert element i samlingen. Siden hvert element i IDictionary er et nøkkel/verdi-par, er elementtypen verken en type nøkkel eller en type verdi. I stedet er det en KeyValuePair-type.



Her er et enkelt eksempelprogram



Entitetsklasse:

navnerom domene
{

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

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

        /// <summary>
        Ordreadresse
        /// </summary>
        offentlig streng OrderAdress { get; sett; }

        /// <summary>
        Bestill telefon
        /// </summary>
        offentlig streng OrderTel { get; sett; }
    }
}



//订单明细


navnerom domene
{
    offentlig klasse OrderDetail
    {
        public int DetailID { get; sett; }

        public int ProductID { get; sett; }

        /// <summary>
        Antall
        /// </summary>
        offentlig desimalkvantitet { get; sett; }

        /// <summary>
        Enhetspris
        /// </summary>
        offentlig desimal Price { get; sett; }
    }
}



//存放数据

ved bruk av System;
ved bruk av System.Collections.Generic;
ved bruk av System.Linq;
ved bruk av System.Text;
ved bruk av Domain;

navneromstjeneste
{
    offentlig statisk klasse OrderStock
    {
        privat statisk IList<Order> m_orderList = ny Liste<Order>(); Definer et generisk felt for en liste

        offentlig statisk IList<Order> OrderList// definerer en generisk egenskap ved en liste
        {
            Få tak
            {
                returnere m_orderList;
            }
            Sett
            {
                m_orderList = verdi;
            }
        }

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

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

        offentlig statisk IDictionary<Order, IList<OrderDetail>> Orders/ definerer en generell egenskap ved en ordbok
        {
            Få tak
            {
                returnere m_orders;
            }
            Sett
            {
                m_orders = verdi;
            }
        }
    }
}



Tjenestegrensesnitt

ved bruk av System;
ved bruk av Domain;
navneromstjeneste
{
    offentlig grensesnitt IOrderService
    {

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

       Søk i alle
        System.Collections.Generic.IList<Domain.Order> LoadAll();

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

//更新
        void Update(Domain.Order-enhet);

  Søk etter ID
        Order Get (objekt-id);

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



navneromstjeneste
{
    offentlig grensesnitt IOrderDetailService
    {
        void Delete(System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> enhet);
        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-entitet, System.Collections.Generic.IList<Domain.OrderDetail> detalj);
        void Update(System.Collections.Generic.KeyValuePair<Domain.Order, System.Collections.Generic.IList<Domain.OrderDetail>> enhet);
    }
}



Tjenesterealisering

ved bruk av System;
ved bruk av System.Collections.Generic;
ved bruk av System.Linq;
ved bruk av System.Text;
ved bruk av Domain;

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

            returliste;
        }

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

        offentlig objekt Save(Order entity)
        {
            OrderStock.OrderList.Add (enhet);

            Returner entitet. OrderID;
        }

        offentlig tomrom Oppdatering (Ordre-enhet)
        {
            var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID);

            hvis (liste. Tell<Order>() > 0)
            {
                Rekkefølge = liste. First();
                OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)] = enhet;
            }
        }

        offentlig orden Get(objekt-id)
        {
            Ordensenhet = null;
            var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id);
            hvis (liste. Tell<Order>() > 0)
            {
                Rekkefølge = liste. First();
                enhet = OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)];
            }
            returenhet;
        }

        offentlig tomrom Slett (Ordre-enhet)
        {
            var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID);
            hvis (liste. Tell<Order>() > 0)
            {
                Rekkefølge = liste. First();
                BestillLager.BestillListe.Fjern(bestil);
            }
        }
    }
}





ved bruk av System;
ved bruk av System.Collections.Generic;
ved bruk av System.Linq;
ved bruk av System.Text;
ved bruk av Domain;

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

            returner DIC;
        }

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

        offentlig 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();
                var list = element. Value.Where(w => w.DetailID == (int)mainID);
                hvis (liste. Tell<OrderDetail>() > 0)
                {
                    id = liste. First(). DetailID + 1;
                }
            }
            Return ID;
        }

        offentlig objekt Lagre (Order entity, IList<OrderDetail> detalj)
        {
            objektresultat = null;
            hvis (! OrderStock.Orders.ContainsKey(entity))
            {
                OrderStock.Orders.Add (entitet, detalj);
                resultat = entitet. OrderID;
            }
            returresultat;
        }

        offentlig void Update(KeyValuePair<Order, IList<OrderDetail>> enhet)
        {
            hvis (OrderStock.Orders.ContainsKey(entity. Nøkkel))
            {
                OrderStock.Orders[entity. Nøkkel] = entitet. Verdi;
            }
        }

        offentlig 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();
            }
            
            returenhet;
        }

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



Prøve

ved bruk av System;
ved bruk av System.Collections.Generic;
ved bruk av System.Linq;
ved bruk av System.Text;
ved bruk av NUnit.Framework;
bruk av Service;
ved bruk av Domain;

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

        [Oppsett]
        offentlig tomrom Init()
        {
            m_service = ny OrderService();
        }

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

        [Test]
        offentlig tomrom Save()
        {
            Order entity = 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]
        offentlig tomrom Oppdatering()
        {
            Ordensenhet = m_service. Get(1);
            entitet. OrderAdress = "Korla";
            m_service. Oppdatering (entitet);
        }

        [Test]
        offentlig tomrom Slett()
        {
            Ordensenhet = m_service. Get(1);
            entitet. OrderAdress = "Korla";
            m_service. Delete(entity);
        }
    }
}



ved bruk av System;
ved bruk av System.Collections.Generic;
ved bruk av System.Linq;
ved bruk av System.Text;
ved bruk av NUnit.Framework;
bruk av Service;
ved bruk av Domain;

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

        [Oppsett]
        offentlig tomrom Init()
        {
            m_service = ny OrderDetailService();
        }

        [Test]
        offentlig tomrom 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("-------------- Order Detail ----------");
               foreach (var li in item. Verdi)
               {
                   Console.WriteLine(li.DetailID);
                   Console.WriteLine (li.Price);
                   Console.WriteLine (li.Quantity);
                   Console.WriteLine(li.ProductID);
               }
           }
           Assert.IsNotNull(list);
        }

        [Test]
        offentlig tomrom Save()
        {
            int id = (int)m_service. GetNextID();
            Order entity = 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. Lagre (entitet, liste);
           
            Assert.IsNotNull(obj);
        }

        [Test]
        offentlig tomrom Oppdatering()
        {
            var entity = m_service. Get(1);

            entitet. Value[0] = ny OrderDetail()
            {
                ProductID = 1000,
                DetailID = 1,
                Pris = 13,34 millioner,
                Mengde = 200,1 millioner
            };
            m_service. Oppdatering (entitet);
        }

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



Merk: Du må referere til nunit.framework-verktøyet når du tester




Foregående:Del to CC-angrepsverktøy, bra for stresstesting
Neste:Bi Fujian sendte ut et unnskyldningsbrev på Weibo: Jeg føler meg veldig skyldig og trist
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com