예제 #1
0
        public void StillEncryptsWhenNotAddingSpecialHeader()
        {
            _network.CreateQueue("destination");

            var message = new MessageWithText("We should NOT be able to read this");
            _bus.Advanced.Routing.Send("destination", message).Wait();

            var transportMessage = _network.GetNextOrNull("destination")?.ToTransportMessage();

            Assert.That(transportMessage, Is.Not.Null);

            var bodyString = Encoding.UTF8.GetString(transportMessage.Body);

            Console.WriteLine($"Body: {bodyString}");

            Assert.That(bodyString.Contains("We should NOT be able to read this"), Is.False);
        }
예제 #2
0
        public void DoesNotEncryptWhenAddingSpecialHeader()
        {
            _network.CreateQueue("destination");

            var message = new MessageWithText("We should be able to read this");
            var headers = new Dictionary<string, string>
            {
                {EncryptionHeaders.DisableEncryptionHeader, ""}
            };
            _bus.Advanced.Routing.Send("destination", message, headers).Wait();

            var transportMessage = _network.GetNextOrNull("destination")?.ToTransportMessage();

            Assert.That(transportMessage, Is.Not.Null);

            var bodyString = Encoding.UTF8.GetString(transportMessage.Body);

            Console.WriteLine($"Body: {bodyString}");

            Assert.That(bodyString, Contains.Substring("We should be able to read this"));
        }
예제 #3
0
    public void DoesNotEncryptWhenAddingSpecialHeader()
    {
        _network.CreateQueue("destination");

        var message = new MessageWithText("We should be able to read this");
        var headers = new Dictionary <string, string>
        {
            { EncryptionHeaders.DisableEncryptionHeader, "" }
        };

        _bus.Advanced.Routing.Send("destination", message, headers).Wait();

        var transportMessage = _network.GetNextOrNull("destination")?.ToTransportMessage();

        Assert.That(transportMessage, Is.Not.Null);

        var bodyString = Encoding.UTF8.GetString(transportMessage.Body);

        Console.WriteLine($"Body: {bodyString}");

        Assert.That(bodyString, Contains.Substring("We should be able to read this"));
    }
예제 #4
0
        static void Main(string[] args)
        {
            //Примеры функционала делегата - обозначены в комментариях знаком >>>

            Console.WriteLine("----------------------------------------------------------");
            //>>> Функционал делегата - указатель на другой метод

            //Создаём переменную созданного делегата
            Message message;

            if (DateTime.Now.Hour < 10)
            {
                message = textHello;
            }
            else
            {
                message = textByeBye;
            }

            //Выполнение метода из списка вызовов делегата
            message();


            Console.WriteLine("----------------------------------------------------------");
            //>>> Функционал делегата - делигирование классом выполнения некоторого кода извне

            //(Определяем дополнительную логику извне для выполнение какого-то дейтсвия внутри другого класса)
            Account myAccount = new Account(400);

            Account.AccountStateHandler colorDelegat = new Account.AccountStateHandler(colorMessage);

            //Для первого метода в списке делегат передаём объект, в котором инициализируем переменую делегата
            myAccount.registerHandler(new Account.AccountStateHandler(showMessage));

            //>>> Функционал делегата - добавление, удаление и поочередное выполнение нескольких методов в списке делегатов

            //В методе registerHandler() добавляем метод список вызовов делегата
            myAccount.registerHandler(colorDelegat);
            myAccount.withdraw(200);
            myAccount.withdraw(100);

            //В методе unregisterHandler() удаляем метод из списка вызовов делегата
            myAccount.unregisterHandler(colorDelegat);
            myAccount.withdraw(250);

            Console.WriteLine("----------------------------------------------------------");
            //>>> Функционал делегата - выполнение анонимных методов, которые позволяют создавать готовые экземрляры готов делегатов
            //(Объявление анонимного метода начинается с delegate())
            MessageWithText messageWithText = delegate(string text) {
                Console.WriteLine(text);
            };

            messageWithText("Зупуск анонимный метод!");

            Console.WriteLine("----------------------------------------------------------");
            //>>> Функционал делегата - использование с лямбда-выражениями, которые являются упрощённой запись анонимных методов

            Operatin operation = (x, y) => x * y;   //Лямбда-выражение для опеределение операции умножение двух чисел

            Console.WriteLine("Результат умножение двух чисел - {0}", operation(10, 2));

            //Интересно - если мы доабвим в список выполнения доп.метод, то результат операций выведетя только для последнего метода
            operation += (x, y) => x + y;           //Лямбда-выражение для опеределения операции сложения двух чисел
            Console.WriteLine("В списке выполенения делегата несколько методов, но результат только последнего, это сложение - {0}", operation(153, 47));

            Console.WriteLine("----------------------------------------------------------");

            Console.ReadKey();
        }