Динамическое задание количества и типов атрибутов класса
От: O-Sam Россия  
Дата: 19.09.06 14:10
Оценка:
Можно ли как-то сделать динамическое задание количества и типов атрибутов класса?
Чтобы можно было писать что-то

MyHeap h = new MyHeap();
FillHeap(h); // создание атрибута s типа string
MessageBox.Show(h.s);
Re: Динамическое задание количества и типов атрибутов класса
От: O-Sam Россия  
Дата: 19.09.06 14:10
Оценка:
Или как лучше это эмулировать?
Re: Динамическое задание количества и типов атрибутов класса
От: Lloyd Россия  
Дата: 19.09.06 14:15
Оценка:
Здравствуйте, O-Sam, Вы писали:

OS>Можно ли как-то сделать динамическое задание количества и типов атрибутов класса?

OS>Чтобы можно было писать что-то

Да, можно. Только для этого потребуется язык с динамической типизацией (Python, JavaScript, etc.). На шарпе этого не сделать.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Динамическое задание количества и типов атрибутов класса
От: pt4h Беларусь http://dzmitryhuba.blogspot.com/
Дата: 19.09.06 14:22
Оценка:
Здравствуйте, O-Sam, Вы писали:

OS>Можно ли как-то сделать динамическое задание количества и типов атрибутов класса?

OS>Чтобы можно было писать что-то

OS>
OS>MyHeap h = new MyHeap();
OS>FillHeap(h); // создание атрибута s типа string
OS>MessageBox.Show(h.s);
OS>


Опишите для чего Вам это необходимо? Звучит как минимум странно...
Re[2]: Динамическое задание количества и типов атрибутов кла
От: O-Sam Россия  
Дата: 19.09.06 14:29
Оценка:
Здравствуйте, pt4h, Вы писали:

P>Здравствуйте, O-Sam, Вы писали:


OS>>Можно ли как-то сделать динамическое задание количества и типов атрибутов класса?

OS>>Чтобы можно было писать что-то

OS>>
OS>>MyHeap h = new MyHeap();
OS>>FillHeap(h); // создание атрибута s типа string
OS>>MessageBox.Show(h.s);
OS>>


P>Опишите для чего Вам это необходимо? Звучит как минимум странно...


Скажем так, есть у меня набор объектов, их все хочется объединить в общую структуру. Не хочется иметь числовые индексы, хочется текстовые.
Хочется обойтись без приведения типов. То есть сделать так, чтобы если у меня объект с индексом "idx" имеет тип int, то нормально выполнялось бы что-то типа int a = h.idx или int a = h["idx"].
Re[3]: Динамическое задание количества и типов атрибутов кла
От: DaBro  
Дата: 19.09.06 16:18
Оценка:
Ну можно поддерживать список аттрибутов класса обернутыхn в некоторую иерархию FieldType
BooleanFieldType, DoubleFieldType и т.д.
они могут хавать объекты и строки и пытаются их преобразовывать в тип который понимают.
Чтобы извлечь данные нужного типа без приведения типа придется использовать двойную диспетчеризацию (поищи по шаблону Visitor).
Довольно трудоемкое решение вобщем.

Другой вариант — если схемы данных в системе меняются вместе с алгоритмами их обработки, то по схемам можно генерировать классы на C#

Ну и последний вариант — уже упомянутый — язык без строгой типизации. Самый наверное красивый
Re[3]: Динамическое задание количества и типов атрибутов кла
От: nikov США http://www.linkedin.com/in/nikov
Дата: 20.09.06 08:10
Оценка:
Здравствуйте, O-Sam, Вы писали:

OS>Хочется обойтись без приведения типов. То есть сделать так, чтобы если у меня объект с индексом "idx" имеет тип int, то нормально выполнялось бы

что-то типа int a = h.idx или int a = h["idx"].

Dictionary<string, int>
Re: Динамическое задание количества и типов атрибутов класса
От: nikov США http://www.linkedin.com/in/nikov
Дата: 20.09.06 08:21
Оценка: +1
Здравствуйте, O-Sam, Вы писали:

OS>Можно ли как-то сделать динамическое задание количества и типов атрибутов класса?

OS>Чтобы можно было писать что-то

OS>
OS>MyHeap h = new MyHeap();
OS>FillHeap(h); // создание атрибута s типа string
OS>MessageBox.Show(h.s);
OS>


Если я Вас верно понял, тогда то, что Вы имеете в виду в C# называется не "атрибут", а "свойство".
Атрибуты — это нечто другое, например [Serializable] перед определением класса.
Re: Динамическое задание количества и типов атрибутов класса
От: Pavel M. Россия  
Дата: 20.09.06 08:27
Оценка:
Здравствуйте, O-Sam, Вы писали:

OS>Можно ли как-то сделать динамическое задание количества и типов атрибутов класса?

OS>Чтобы можно было писать что-то

OS>
OS>MyHeap h = new MyHeap();
OS>FillHeap(h); // создание атрибута s типа string
OS>MessageBox.Show(h.s);
OS>


Если ты знаешь тип атрибута, почему бы не воспользоваться Hashtable?


   Hashtable ht = new Hashtable();
   ht["id"] = 15;
   MessageBox.Show(ht["id"].ToString());


и, т.к. ты знаешь тип атрибута, приводить явно.
--------------------------
less think — do more
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.