コード例 #1
0
ファイル: Program.cs プロジェクト: Kersarh/CSharp_Note
        private static void DemoExpadoObjMethod()
        {
            // Для динамического обьекта ExpandoObject возможно обьявлять несколько различных свойств
            dynamic myExpObj = new System.Dynamic.ExpandoObject();

            myExpObj.Name     = "Administrator";
            myExpObj.Password = "******";
            myExpObj.Role     = new List <dynamic> {
                "admin", 10, 20, "user"
            };
            Console.WriteLine($"login: {myExpObj.Name} Password: {myExpObj.Password}");
            foreach (dynamic r in myExpObj.Role) // перечисление ролей
            {
                Console.WriteLine(r);
            }

            // объявляем метод меняющий пароль и добавляющий к нему 10
            myExpObj.ChangePassword = (Action <dynamic>)(x => myExpObj.Password = x + 10);
            // ! Внимание если пароль число то будет суммирование, если строка то в конце добавится 10
            // ! Подобные ошибки часто могут приводить к непредсказуемому поведению программы
            myExpObj.ChangePassword("NewPassword");
            Console.WriteLine($"login: {myExpObj.Name} Password: {myExpObj.Password}");
        }