Example. We have Client with some documents, that can send these document to addresses using different methods. And send methods depends on document type. For example, secret document we can send using only classic post system. But other document can be delivered with all method simultaneously.

How we can realize these concept? We can use Chain of Responsibility pattern.

    public class Document
    {
        public string Content;
        public string Num;
        public string SecurityType;
        public List<string> SendType = new List<string>();
        public Document(string num, string content, string securityType)
        {
            this.Num = num;
            this.Content = content;
            this.SecurityType = securityType;
        }
        public override string ToString()
        {
            return $"Document with number {Num} and content '{Content}' with delivery types: {string.Join(',',SendType)} ;";
        }
    }

    public class DocumentSender
    {
        protected Document document;
        protected DocumentSender next;
        public DocumentSender(Document document)
        {
            this.document = document;
        }
        public void Add(DocumentSender documentSender)
        {
            if (next != null) next.Add(documentSender);
            else next = documentSender;
        }

        public virtual void Send()
        {
            next?.Send();
        }
    }

    public class EmailSender : DocumentSender
    {
        public EmailSender(Document document) : base(document) { }
        public override void Send()
        {
            if (document.SecurityType == "Public") document.SendType.Add("Email");
            base.Send();
        }
    }

    public class SystemSender : DocumentSender
    {
        public SystemSender(Document document) : base(document) { }
        public override void Send()
        {
            if (document.SecurityType == "Public") document.SendType.Add("System");
            base.Send();
        }
    }

    public class PostSender : DocumentSender
    {
        public PostSender(Document document) : base(document) { }
        public override void Send()
        {
            document.SendType.Add("Post");
            base.Send();
        }
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            Document doc1 = new Document("A-1", "Test one", "Private");
            var documentSender1 = new DocumentSender(doc1);
            documentSender1.Add(new EmailSender(doc1));
            documentSender1.Add(new PostSender(doc1));
            documentSender1.Add(new SystemSender(doc1));
            documentSender1.Send();
            Console.WriteLine(doc1);


            Document doc2 = new Document("A-2", "Test two", "Public");
            var documentSender2 = new DocumentSender(doc2);
            documentSender2.Add(new EmailSender(doc2));
            documentSender2.Add(new PostSender(doc2));
            documentSender2.Add(new SystemSender(doc2));
            documentSender2.Send();
            Console.WriteLine(doc2);

            Console.ReadLine();
        }
    }

Private doc1 will be sent using only Post delivery system. But second document doc2 will be sent by all types of systems with chain.