首页 > 代码库 > 泛型使用Demo

泛型使用Demo

通过泛型来简化工作的一个Demo,记录一下:

using System;
using System.Collections.Generic;
 
namespace MyCollection
{
    public class CBase
    {
        private string id = "CBase";
        public virtual string Id
        {
            get { return id; }
            set { id = value; }
        }
    }
 
    public class CActor : CBase
    {
        private string id = "CActor";
        public override string Id
        {
            get { return id; }
            set { base.Id = value; }
        }
 
        public string resource;
    }
 
    public class CBullet : CBase
    {
        private string id = "CBullet";
        public override string Id
        {
            get { return id; }
            set { base.Id = value; }
        }
        public string effect;
    }
 
    public class GenericDemo
    {
        public static CBullet MBullet = new CBullet();
        public static CActor MActor = new CActor();
        public static Dictionary<string, CBase> dict = new Dictionary<string, CBase>();
 
        public static T GetInfo<T>(string id) where T : CBase
        {
            CBase mBase;
            if (dict.TryGetValue(id, out mBase))
            {
                return (T)mBase;
            }
            return null;
        }
        public static void Main(string[] args)
        {
            //dict = new Dictionary<string, CBase>();
            dict.Add("actor", MActor);
            dict.Add("bullet", MBullet);
            CActor actor1 = GetInfo<CActor>("actor");
            CBullet bullet1 = GetInfo<CBullet>("bullet");
            Console.WriteLine("T= \"{0}\" ,id={1} \nT= \"{2}\" ,id={3}", actor1.GetType(), actor1.Id, bullet1.GetType(), bullet1.Id);
        }
    }
}

image

IL代码如下:

image

泛型使用Demo