Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 22445|Vastaus: 0

[Lähde] Yleisten kokoelmaluokkien (Ilist, IDictionary) käyttö C#:ssa

[Kopioi linkki]
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ä stressitestaukseen
Seuraava:Bi Fujian julkaisi anteeksipyyntökirjeen Weibossa: Tunnen suurta syyllisyyttä ja surua
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com