Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Методы get и set для класса 
:(
    Опции темы
Atomic
Дата 5.3.2009, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 23
Регистрация: 4.12.2006

Репутация: нет
Всего: нет



Есть класс. Нужно отлавливать вызовы несуществующих переменных и делать вид, что они есть.
Собственно, этот класс будет содержать какие-то данные в хеш-таблице, но обращаться хотелось бы так, словно эти переменные в классе существуют. Обращение к несуществующей переменной должно приводить к ее созданию и некоторой обработке.
Методы get и set, насколько я понял, работают только внутри конкретной переменной.
Есть ли способ сделать такую фишку?
То есть так, чтобы вызов был в виде class.var=1 а не class.get(var,1).


PM   Вверх
nagg
  Дата 5.3.2009, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 6.1.2008
Где: Minsk

Репутация: нет
Всего: 4



На ум приходят анонимные типы только  smile
Extended properties пока вроде ещё не придумали... 

Это сообщение отредактировал(а) nagg - 5.3.2009, 00:27
--------------------
I am the State...
PM MAIL WWW ICQ Skype   Вверх
mihryak
Дата 5.3.2009, 01:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



Atomic, шарп - не динамический язык, подобный джава скрипту, все свойства должны быть явно прописаны до компиляции

что-то мне подсказывает, что нужно нечто вроде класса с индексаторами
Код

    class IndexerClass
    {
        private readonly Dictionary<string, string> map = new Dictionary<string, string>();

        public string this[string key]
        {
            get
            {
                if (!map.ContainsKey(key))
                {
                    map[key] = key + (map.Count + 1);
                }
                return map[key];
            }
            set
            {
                map[key] = value;
            }
        }
    }

    class Program
    {
        static void Main()
        {
            IndexerClass test = new IndexerClass();
            test["A"] = "A";
            Console.WriteLine(test["A"]);

            Console.WriteLine(test["B"]);

            Console.ReadKey();
        }
    }

а под этим
Цитата(Atomic @  5.3.2009,  01:13 Найти цитируемый пост)
Методы get и set, насколько я понял, работают только внутри конкретной переменной.

подразумевается ошибочное мнение, что get-set позволяет выдавать-присваивать одно поле без возможности дополнительных действий - нет, там можно делать вообще что угодно
PM MAIL ICQ   Вверх
Atomic
Дата 5.3.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 23
Регистрация: 4.12.2006

Репутация: нет
Всего: нет



Спасибо, mihryak, заработало. И примерно так, как нужно.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0826 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.