Замена имени переменной.
От: Lyubitel_Sovershenstva  
Дата: 09.11.05 08:41
Оценка:
Есть такое проперти.


public string MyNumber
{
get { return _myNumber != null ? _myNumber : ""; }
set {

SetStringPropertyHelper(value , out _myNumber, _lenmyNumber, true);
}
}

Как видите, там очень часто встречается слово _myNumber.
Проблема в том, что таких пропертей нужно штук 50 в 4 классах.
Соотвественно есть два пути 1) копировать и ручками заменять все 3 нмбера. Но єто труд машинистки, а не программиста

2)Сделать так, чтобы этот _myNumber сам заменялся программным способом.

Если бы это был С++, то я бы написал что-то типа
public string MyNumber
{
#define NUMBER _myNumber
get { return NUMBER != null ? NUMBER : ""; }
set {

SetStringPropertyHelper(value , out NUMBER, _lenmyNumber, true);
}
}

Да, я в курсе, что дефайн действует глобально и пропертей нет в С++, но сама идея

Или типа
public string MyNumber
{
string *pNumber;
get { return *pNumber != null ? *pNumber : ""; }
set {

SetStringPropertyHelper(value , out *pNumber, _lenmyNumber, true);
}
}

Но, какая технология есть на шарпе, чтобы сделать изящно?
Re: Замена имени переменной.
От: Mab Россия http://shade.msu.ru/~mab
Дата: 09.11.05 08:48
Оценка: 2 (1)
Здравствуйте, Lyubitel_Sovershenstva, Вы писали:

L_S>Но, какая технология есть на шарпе, чтобы сделать изящно?

Этого можно добиться кодогенерацией через emit, например. Или даже кодогенерацией cs-файла (хотя бы через тот же CodeSmith).
Re: Замена имени переменной.
От: vitaly_spb Россия  
Дата: 09.11.05 10:17
Оценка:
L_S>Как видите, там очень часто встречается слово _myNumber.
L_S>Проблема в том, что таких пропертей нужно штук 50 в 4 классах.

Честно говоря, не очень понятно — тебе нужна кодогенерация? ReSharper (есть возможность генерить свойство по переменной) или CodeSmith (вообще по шаблону делает код) помогут.
...Ei incumbit probatio, qui dicit, non qui negat...
Re[2]: Замена имени переменной.
От: vitaly_spb Россия  
Дата: 09.11.05 10:17
Оценка:
Правда что не понятно — при чем тут сабж?
...Ei incumbit probatio, qui dicit, non qui negat...
Re[2]: Замена имени переменной.
От: Lyubitel_Sovershenstva  
Дата: 09.11.05 10:25
Оценка:
Здравствуйте, vitaly_spb, Вы писали:

L_S>>Как видите, там очень часто встречается слово _myNumber.

L_S>>Проблема в том, что таких пропертей нужно штук 50 в 4 классах.

_>Честно говоря, не очень понятно — тебе нужна кодогенерация? ReSharper (есть возможность генерить свойство по переменной) или CodeSmith (вообще по шаблону делает код) помогут.


Вообще я искал изящное решение, кодогенерацию не рассматривал, хотя она может помочь.
Мне нужен шарповский аналог вот єтого или похожего.

public string MyNumber
{
string *pNumber;
get { return *pNumber != null ? *pNumber : ""; }
set {

SetStringPropertyHelper(value , out *pNumber, _lenmyNumber, true);
}
}

Т.е. чтобі я имя переменной задавал один раз, а потом просто в следующем проперти менял єто имя.
Re[3]: Замена имени переменной.
От: Lyubitel_Sovershenstva  
Дата: 09.11.05 10:26
Оценка:
Здравствуйте, vitaly_spb, Вы писали:

_>Правда что не понятно — при чем тут сабж?


Сорри за введение в заблуждение.
Ну а как можно назвать єту тему?
Re[3]: Замена имени переменной.
От: vitaly_spb Россия  
Дата: 09.11.05 10:38
Оценка:
L_S>Т.е. чтобі я имя переменной задавал один раз, а потом просто в следующем проперти менял єто имя.

Для данного конкретного случая проще всего использовать кодогенерацию (CopyPaste простой поможет ).
...Ei incumbit probatio, qui dicit, non qui negat...
Re[3]: Замена имени переменной.
От: Аноним  
Дата: 09.11.05 11:54
Оценка:
Если студия 2005, то тогда можно сниппет для этого сделать.
Разные сниппеты тут: http://www.gotcodesnippets.net/
SUNETA


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[4]: Замена имени переменной.
От: Lyubitel_Sovershenstva  
Дата: 09.11.05 16:01
Оценка:
Здравствуйте, k_savelev, Вы писали:

_>Если студия 2005, то тогда можно сниппет для этого сделать.

_>Разные сниппеты тут: http://www.gotcodesnippets.net/

_>
данное сообщение получено с www.gotdotnet.ru

_>ссылка на оригинальное сообщение


Нет, у меня 2003 студия.
Но все равно спасибо,
Я 2005 не ставил, но теперь буду знать, что там есть такая полезная фича.
Re[4]: Замена имени переменной.
От: Lyubitel_Sovershenstva  
Дата: 09.11.05 16:03
Оценка:
Здравствуйте, vitaly_spb, Вы писали:

L_S>>Т.е. чтобі я имя переменной задавал один раз, а потом просто в следующем проперти менял єто имя.


_>Для данного конкретного случая проще всего использовать кодогенерацию (CopyPaste простой поможет ).


Ну уж нет, 150 копи-пасте єто неинтересно.
Я даже до єтого написал свою утилитку, облегчающую работу.
Будем смотреть кодогенерацию, хотя попервах кажется, что она не для слабіх умов.
Re[2]: Замена имени переменной.
От: Lyubitel_Sovershenstva  
Дата: 09.11.05 16:05
Оценка:
Здравствуйте, Mab, Вы писали:

Mab>Здравствуйте, Lyubitel_Sovershenstva, Вы писали:


L_S>>Но, какая технология есть на шарпе, чтобы сделать изящно?

Mab>Этого можно добиться кодогенерацией через emit, например. Или даже кодогенерацией cs-файла (хотя бы через тот же CodeSmith).

Угу, спасибо.
Кодесмис посмотрел, а эмит не нашел в гугле.

А фришное что-нибудь есть?
Re[3]: Замена имени переменной.
От: GlebZ Россия  
Дата: 09.11.05 16:22
Оценка:
Здравствуйте, Lyubitel_Sovershenstva, Вы писали:

L_S>Угу, спасибо.

L_S>Кодесмис посмотрел, а эмит не нашел в гугле.
Лучше в MSDN. Ключевое слово System.Reflection.Emit.

L_S>А фришное что-нибудь есть?

Можно считать так.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Замена имени переменной.
От: Аноним  
Дата: 09.11.05 16:21
Оценка:
"Эмит" — это средства пространства имен System.Reflection.Emit .


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[4]: Замена имени переменной.
От: Lyubitel_Sovershenstva  
Дата: 10.11.05 08:57
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Здравствуйте, Lyubitel_Sovershenstva, Вы писали:


L_S>>Угу, спасибо.

L_S>>Кодесмис посмотрел, а эмит не нашел в гугле.
GZ>Лучше в MSDN. Ключевое слово System.Reflection.Emit.

L_S>>А фришное что-нибудь есть?

GZ>Можно считать так.

GZ>С уважением, Gleb.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.