zoukankan      html  css  js  c++  java
  • C# 自定义泛型类,并添加约束

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;


    namespace GenericExam
    {
        class Program
        {
            static void Main(string[] args)
            {
                var dm = new DocumentManager<Document>();
                dm.AddDocument(new Document("Title A","Content A"));
                dm.AddDocument(new Document("Title B","Content B"));
                dm.DisplayAllDocument();


                if (dm.IsDocumentAvailable)
                {
                    Document d = dm.GetDocument();
                    Console.WriteLine(d.Title);
                }
                Console.Read();


            }
        }

    }



    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;


    namespace GenericExam
    {
        public interface IDocument
        {
            string Title { get; set; }
            string Content { get; set; }
        }


        public class Document:IDocument
        {
            public string Title { get; set; }
            public string Content { get; set; }


            public Document(string title, string content)
            {
                this.Title = title;
                this.Content = content;
            }
        }


        public class DocumentManager<T> where T : IDocument
        {
            public Queue<T> DocumentQueue = new Queue<T>();


            public void AddDocument(T doc)
            {
                lock(this)
                {
                    DocumentQueue.Enqueue(doc);
                }
            }


            public bool IsDocumentAvailable
            {
                get { return DocumentQueue.Count > 0; }
            }


            public T GetDocument()
            {
                T doc = default(T);
                lock (this)            
                {               
                    doc = DocumentQueue.Dequeue();
                }
                return doc;
            }


            public void DisplayAllDocument()
            {
                foreach (T doc in DocumentQueue)
                {
                    Console.WriteLine(((IDocument)doc).Title);
                }
            }
        }
    }

  • 相关阅读:
    如何使用jackson美化输出json/xml
    使用Jackson在Java中处理JSON
    用 Jackson 来处理 JSON
    writeValueAsString封装成工具类
    周鸿袆:360回归是出于国家安全考虑(硬件有硬件独特的规律,硬件不可能有很高的利润,核心的价值还是硬件背后承载的软件和云端的服务)
    Unicode 7.0.1中文支持非常好
    六个编程范型将改变你对编程的看法(好多奇怪的语言和奇怪的想法)
    delphi多版本安装方法
    UAC就不能一次添加、永久信任吗?
    数学符号及读法大全
  • 原文地址:https://www.cnblogs.com/dxmfans/p/9434796.html
Copyright © 2011-2022 走看看