Проблемы со статическим конструктором
От: Visor2004  
Дата: 08.05.11 12:09
Оценка:
Обнаружилось, что если в классе потомке из статического конструктора обратиться к статическим полям класса предка, то они оказываются не инициализированными.


class A
{
   public static mutable Test : object = object ( );
}

class B
{
   public static mutable Test1 : string = Test.ToString ( );
}


Получим NRE при инициализации Test1, потому что Test на этот момент еще null. Чо делать?
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re: Проблемы со статическим конструктором
От: catbert  
Дата: 08.05.11 12:26
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>Обнаружилось, что если в классе потомке из статического конструктора обратиться к статическим полям класса предка, то они оказываются не инициализированными.


На моем Немерле 1.0.0.9547 ваш код работает правильно (Test1 == "System.Object"). Только мне пришлось заменить Test.ToString() на A.Test.ToString(). Проверте имена членов класса B, может ваш метод обращается не к тому Test.
Re[2]: Проблемы со статическим конструктором
От: Visor2004  
Дата: 08.05.11 22:09
Оценка:
Здравствуйте, catbert, Вы писали:

В моем коде опечатка была, нужно именно наследование

class A
{
   public static mutable Test : object = object ( );
}

class B : A
{
   public static mutable Test1 : string = Test.ToString ( );
}
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re: Проблемы со статическим конструктором
От: hardcase Пират http://nemerle.org
Дата: 08.05.11 23:06
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>Получим NRE при инициализации Test1, потому что Test на этот момент еще null. Чо делать?


IL в студию (пока нету компилятора)! Не думаю что это баг, скорее некое недопонимание.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: Проблемы со статическим конструктором
От: catbert  
Дата: 08.05.11 23:23
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>
V>class A
V>{
V>   public static mutable Test : object = object ( );
V>}

V>class B : A
V>{
V>   public static mutable Test1 : string = Test.ToString ( );
V>}
V>


У меня этот код работает.
Re: Проблемы со статическим конструктором
От: Visor2004  
Дата: 09.05.11 00:29
Оценка:
Здравствуйте, Visor2004, Вы писали:

Переставил nemerle и все разрешилось.
Помните!!! ваш говнокод кому-то предстоит разгребать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.