Индексатор ExpandoObject в C#: методы динамического управления свойствами

В C# класс ExpandoObjectпозволяет создавать объекты с динамическими свойствами во время выполнения. Доступ к этим динамическим свойствам и их изменение можно получить с помощью индексатора. Вот несколько методов, связанных с использованием индексатора с ExpandoObject:

  1. Добавление свойств. Вы можете добавлять свойства к экземпляру ExpandoObjectс помощью индексатора. Например:

    dynamic expando = new ExpandoObject();
    expando.FirstName = "John";
    expando.LastName = "Doe";
  2. Доступ к свойствам. Вы можете получить доступ к свойствам ExpandoObjectс помощью индексатора. Например:

    string firstName = expando.FirstName;
    string lastName = expando.LastName;
  3. Изменение свойств. Вы можете изменить существующие свойства ExpandoObjectс помощью индексатора. Например:

    expando.FirstName = "Jane";
  4. Удаление свойств. Вы можете удалить свойства из ExpandoObjectс помощью метода IDictionary.Remove. Например:

    ((IDictionary<string, object>)expando).Remove("LastName");
  5. Проверка существования свойства: вы можете проверить, существует ли свойство в ExpandoObject, используя метод IDictionary.ContainsKey. Например:

    bool hasFirstName = ((IDictionary<string, object>)expando).ContainsKey("FirstName");
  6. Перебор свойств. Вы можете перебирать свойства ExpandoObject, используя свойство IDictionary.Keys. Например:

    foreach (string propertyName in ((IDictionary<string, object>)expando).Keys)
    {
       // Do something with each property
    }
  7. Динамический вызов метода. Вы можете динамически вызывать методы для ExpandoObject, используя метод DynamicObject.TryInvokeMember. Например:

    dynamic expando = new ExpandoObject();
    expando.SayHello = new Action(() => Console.WriteLine("Hello!"));
    expando.SayHello();