Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 22445|Válasz: 0

[Forrás] Az általános gyűjteményosztályok (Ilist, IDictionary) használata C#-ban

[Linket másol]
Közzétéve 2015. 04. 10. 17:22:50 | | |

Az IDictionary egy általános kulcs/értékpár alapinterfésze, amelyek mindegyike kulcs-érték pár a keyValuePair objektumban.

Minden párnak egyedi kulcsa kell, hogy legyen. A megvalósítás eltér abban, hogy a kulcs üres referenciaként maradjon (Nothing a Visual Basic-ben). Ez az érték lehet üres referencia (Nothing a Visual Basic-ben), és nem kell egyedinek lennie. Az IDictionary interfész lehetővé teszi a benne lévő kulcsok és értékek felsorolását, de ez nem jelent konkrét rendezési sorrendet.

A foreach utasítás a C# nyelvben (For Each a Visual Basic-ben és For Each a C++-ban) megköveteli az egyes elemek típusát a gyűjteményben. Mivel az IDictionary minden eleme kulcs/értékpár, az elemtípus sem kulcstípus, sem értéktípus. Ehelyett egy KeyValuePair típus.



Íme egy egyszerű példaprogram



Egységosztály:

névtér Domain
{

//订单
    közrend
    {
        public int OrderID { get; Szett; }

        /// <summary>
        Rendelési dátum
        /// </summary>
        public DateTime OrderDate { get; Szett; }

        /// <summary>
        Rendelés címe
        /// </summary>
        public string OrderAdress { get; Szett; }

        /// <summary>
        Rendelj telefont
        /// </summary>
        public string OrderTel { get; Szett; }
    }
}



//订单明细


névtér Domain
{
    közosztályos OrderDetail
    {
        public int DetailID { get; Szett; }

        public int ProductID { get; Szett; }

        /// <summary>
        Mennyiség
        /// </summary>
        public decimális Mennyiség { get; Szett; }

        /// <summary>
        Egységár
        /// </summary>
        public decimal Price { get; Szett; }
    }
}



//存放数据

System használatával;
System.Collections.Generic használatával;
a System.Linq használatával;
System.Text használatával;
Domain használatával;

névtér szolgáltatás
{
    public statikus osztály OrderStock
    {
        private statikus<Order> IList m_orderList = új list<Order>(); Definiáljunk egy általános mezőt egy listához

        public static IList<Order> OrderList// egy List általános tulajdonságát definiálja
        {
            Fogd
            {
                visszatérjen m_orderList;
            }
            Készlet
            {
                m_orderList = érték;
            }
        }

        privát statikus IDictionary<Order, <OrderDetail>IList> m_orders = új Szótár<Order, <OrderDetail>IList>();

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

        public static IDictionary<Order, <OrderDetail>IList> Orders/ definiál egy szótár általános tulajdonságát
        {
            Fogd
            {
                visszatérjen m_orders;
            }
            Készlet
            {
                m_orders = érték;
            }
        }
    }
}



Szolgáltatási interfészek

System használatával;
Domain használatával;
névtér szolgáltatás
{
    nyilvános interfész IOrderService
    {

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

       Kérdezz mindenkit
        System.Collections.Generic.IList<Domain.Order> LoadAll();

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

//更新
        void Update(Domain.Order entity);

  Lekérdezés azonosító szerint
        Order Get(object id);

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



névtér szolgáltatás
{
    nyilvános interfész 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);
        object 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);
    }
}



Szolgáltatás megvalósítása

System használatával;
System.Collections.Generic használatával;
a System.Linq használatával;
System.Text használatával;
Domain használatával;

névtér szolgáltatás
{
    közosztályú OrderService : IOrderService
    {
        public IList<Order> LoadAll()
        {
            var list = OrderStock.OrderList;

            visszaküldési lista;
        }

        public object GetNextID()
        {
            int id = 1;
            if (OrderStock.OrderList.Count > 0)
            {
                id = OrderStock.OrderList.Max(m => m.OrderID) + 1;
            }
            visszaküldési azonosító;
        }

        nyilvános objektum Mentés (Rend entitás)
        {
            OrderStock.OrderList.Add(entity);

            Visszatér entitás. OrderID;
        }

        public void Frissítés (Order entity)
        {
            var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID);

            if (list. Count<Order>() > 0)
            {
                Sorrend = lista. Első();
                OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)] = entitás;
            }
        }

        Közrend Get(tárgyazonosító)
        {
            Rend entitás = null;
            var list = OrderStock.OrderList.Where(w => w.OrderID == (int)id);
            if (list. Count<Order>() > 0)
            {
                Sorrend = lista. Első();
                entity = OrderStock.OrderList[OrderStock.OrderList.IndexOf(order)];
            }
            vissza entitás;
        }

        public void Delete (Order entity)
        {
            var list = OrderStock.OrderList.Where(w => w.OrderID == entity. OrderID);
            if (list. Count<Order>() > 0)
            {
                Sorrend = lista. Első();
                OrderStock.OrderList.Reremove (order);
            }
        }
    }
}





System használatával;
System.Collections.Generic használatával;
a System.Linq használatával;
System.Text használatával;
Domain használatával;

névtér szolgáltatás
{
    public class OrderDetailService : IOrderDetailService
    {
        public IDictionary<Order, <OrderDetail>IList> LoadAll()
        {
            var dic = OrderStock.Orders;

            Return Dic;
        }

        public object GetNextID()
        {
            int id = 1;
            if (OrderStock.Orders.Count > 0)
            {
                id = OrderStock.Orders.Max(m => m.Key.OrderID) + 1;
            }
            visszaküldési azonosító;
        }

        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 = tétel. Value.Where(w => w.DetailID == (int)mainID);
                if (list. Count<OrderDetail>() > 0)
                {
                    id = lista. Első(). DetailID + 1;
                }
            }
            visszaküldési azonosító;
        }

        public object Save(Order entity, IList<OrderDetail> részlet)
        {
            objektum eredmény = null;
            ha (! OrderStock.Orders.ContainsKey(entity))
            {
                OrderStock.Orders.Add(entitity, detail);
                eredmény = entitás. OrderID;
            }
            visszaadási eredmény;
        }

        public void Update(KeyValuePair<Order, <OrderDetail>IList> entity)
        {
            if (OrderStock.Orders.ContainsKey(entity. Kulcs))
            {
                OrderStock.Orders[entity. Kulcs] = entitás. Érték;
            }
        }

        public KeyValuePair<Order, <OrderDetail>IList> Get(object id)
        {
           
            KeyValuePair<Order, <OrderDetail>IList> entity = új 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();
            }
            
            vissza entitás;
        }

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



Teszt

System használatával;
System.Collections.Generic használatával;
a System.Linq használatával;
System.Text használatával;
NUnit.Framework használatával;
Szolgáltatás használatával;
Domain használatával;

névtér ServiceTest
{
    [TestFixture]
    közosztályú OrderServiceTest
    {
        privát IOrderService m_service;

        [Beállítás]
        public void Init()
        {
            m_service = új OrderService();
        }

        [Teszt]
        public void LoadAllTest()
        {
           var list= m_service. LoadAll();
           foreach (var tétel a listán)
           {
               Console.WriteLine(item. OrderID);
               Console.WriteLine(item. OrderAdress);
               Console.WriteLine(item. OrderDate);
               Console.WriteLine(item. OrderTel);
           }
           Assert.IsNotNull(list);
        }

        [Teszt]
        public void Save()
        {
            Order entity = new Order()
            {
                OrderID = (int)m_service. GetNextID(),
                OrderDate = DateTime.Now.AddDays(-1),
                OrderAdress = "Urumqi",
                OrderTel = "123123"
            };
            objektum obj = m_service. Save(entity);
           
            Assert.IsNotNull(obj);
        }

        [Teszt]
        public void Frissítés()
        {
            Rend entitás = m_service. Get(1);
            entitás. OrderAdress = "Korla";
            m_service. Frissítés(entity);
        }

        [Teszt]
        public void Delete()
        {
            Rend entitás = m_service. Get(1);
            entitás. OrderAdress = "Korla";
            m_service. Delete(entity);
        }
    }
}



System használatával;
System.Collections.Generic használatával;
a System.Linq használatával;
System.Text használatával;
NUnit.Framework használatával;
Szolgáltatás használatával;
Domain használatával;

névtér ServiceTest
{
    [TestFixture]
    közosztályú OrderServiceDetailTest
    {
        privát IOrderDetailService m_service;

        [Beállítás]
        public void Init()
        {
            m_service = új OrderDetailService();
        }

        [Teszt]
        public void LoadAllTest()
        {
           var list= m_service. LoadAll();
           foreach (var tétel a listán)
           {
               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. Érték)
               {
                   Console.WriteLine (li.DetailID);
                   Console.WriteLine (li.Price);
                   Console.WriteLine(li.Mennyiség);
                   Console.WriteLine(li.ProductID);
               }
           }
           Assert.IsNotNull(list);
        }

        [Teszt]
        public void Save()
        {
            int id = (int)m_service. GetNextID();
            Order entity = new Order()
            {
                OrderID = id,
                OrderDate = DateTime.Now.AddDays(-1),
                OrderAdress = "Urumqi",
                OrderTel = "123123"
            };
            IList<OrderDetail> list = új List<OrderDetail>();
            for (int i = 0; I < 3; i++)
            {
                listát. Add(new OrderDetail() {
                    DetailID = i + 1,
                    Price=10+i,
                    Mennyiség=i+100,
                    ProductID = 1000 + i
                });
            }
            objektum obj = m_service. Save(entity, list);
           
            Assert.IsNotNull(obj);
        }

        [Teszt]
        public void Frissítés()
        {
            var entity = m_service. Get(1);

            entitás. Value[0] = új OrderDetail()
            {
                ProductID = 1000,
                DetailID = 1,
                Ár = 13,34M,
                Mennyiség = 200,1M
            };
            m_service. Frissítés(entity);
        }

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



Megjegyzés: Teszteléskor hivatkoznod kell a nunit.framework eszközre




Előző:Oszd meg két CC támadó eszközt, jó stresszteszteléshez
Következő:Bi Fujian bocsánatkérő levelet adott ki a Weibón: Nagyon bűntudatom és szomorú vagyok
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com