как изменить статическое поле класса, заданного строкой
От: _Claus_  
Дата: 07.01.12 21:35
Оценка:
у множества классов определен static public член — type_num.


        class X 
        {    
             static public type_id_;
             
             virtual public type_id(): int
             {
               type_id_
             }
        }
        class childX
        {
             new static public type_id_;
             
             override public type_id(): int
             {
               type_id_
             }
         }



как, имея имя класса в строке, установить его type_id_ в нужное значение?

решения с генерацией в каждом классе установочного виртуального метода хотелось бы избежать.
(слишком явный костыль).

напомню, что доступ туда из динамически созданных объектов считается ошибкой.
Re: как изменить статическое поле класса, заданного строкой
От: catbert  
Дата: 07.01.12 22:43
Оценка:
Здравствуйте, _Claus_, Вы писали:


_C_>как, имея имя класса в строке, установить его type_id_ в нужное значение?


_C_>решения с генерацией в каждом классе установочного виртуального метода хотелось бы избежать.

_C_>(слишком явный костыль).

_C_>напомню, что доступ туда из динамически созданных объектов считается ошибкой.


А что вы хотите получить-то? То есть зачем вам номер, и почему важно чтобы он был задан в каком-то другом месте?
Re[2]: как изменить статическое поле класса, заданного строк
От: _Claus_  
Дата: 07.01.12 22:51
Оценка:
C>А что вы хотите получить-то? То есть зачем вам номер, и почему важно чтобы он был задан в каком-то другом месте?
датабаза у меня. для синхронизации номеров в базе и ассембле — в последнем типы могут поменяться/удалиться/добавиться,
и я при открытии связываю их. вариантов разных сделать это много, но это самый быстрый.
Re[3]: как изменить статическое поле класса, заданного строк
От: catbert  
Дата: 08.01.12 10:36
Оценка:
Здравствуйте, _Claus_, Вы писали:


C>>А что вы хотите получить-то? То есть зачем вам номер, и почему важно чтобы он был задан в каком-то другом месте?

_C_>датабаза у меня. для синхронизации номеров в базе и ассембле — в последнем типы могут поменяться/удалиться/добавиться,
_C_>и я при открытии связываю их. вариантов разных сделать это много, но это самый быстрый.

То есть связываете в рантайме?
Re[4]: как изменить статическое поле класса, заданного строк
От: _Claus_  
Дата: 08.01.12 13:34
Оценка:
C>То есть связываете в рантайме?
да.
Re[5]: как изменить статическое поле класса, заданного строк
От: catbert  
Дата: 08.01.12 16:39
Оценка:
Здравствуйте, _Claus_, Вы писали:

C>>То есть связываете в рантайме?

_C_>да.

А System.Reflection пробовали?
Re[6]: как изменить статическое поле класса, заданного строк
От: Аноним  
Дата: 08.01.12 17:18
Оценка:
C>А System.Reflection пробовали?
Я не знаю, как им воспользоваться для данной ситуации. имя поля я знаю и без него.
Re[5]: как изменить статическое поле класса, заданного строк
От: CodingUnit Россия  
Дата: 09.01.12 11:56
Оценка:
Здравствуйте, _Claus_, Вы писали:

C>>То есть связываете в рантайме?

_C_>да.

ну тогда макросы мало здесь могут помочь, только создать методы для установки идентификатора, если установка в рантайме то можно решить только существующими путями, сделать статические или виртуальные методы, установку через конструктор и тп
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.