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);
}
}
Но, какая технология есть на шарпе, чтобы сделать изящно?
Здравствуйте, Lyubitel_Sovershenstva, Вы писали:
L_S>Но, какая технология есть на шарпе, чтобы сделать изящно?
Этого можно добиться кодогенерацией через emit, например. Или даже кодогенерацией cs-файла (хотя бы через тот же CodeSmith).
L_S>Как видите, там очень часто встречается слово _myNumber. L_S>Проблема в том, что таких пропертей нужно штук 50 в 4 классах.
Честно говоря, не очень понятно — тебе нужна кодогенерация? ReSharper (есть возможность генерить свойство по переменной) или CodeSmith (вообще по шаблону делает код) помогут.
...Ei incumbit probatio, qui dicit, non qui negat...
Здравствуйте, 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);
}
}
Т.е. чтобі я имя переменной задавал один раз, а потом просто в следующем проперти менял єто имя.
Здравствуйте, vitaly_spb, Вы писали:
L_S>>Т.е. чтобі я имя переменной задавал один раз, а потом просто в следующем проперти менял єто имя.
_>Для данного конкретного случая проще всего использовать кодогенерацию (CopyPaste простой поможет ).
Ну уж нет, 150 копи-пасте єто неинтересно.
Я даже до єтого написал свою утилитку, облегчающую работу.
Будем смотреть кодогенерацию, хотя попервах кажется, что она не для слабіх умов.
Здравствуйте, Mab, Вы писали:
Mab>Здравствуйте, Lyubitel_Sovershenstva, Вы писали:
L_S>>Но, какая технология есть на шарпе, чтобы сделать изящно? Mab>Этого можно добиться кодогенерацией через emit, например. Или даже кодогенерацией cs-файла (хотя бы через тот же CodeSmith).
Угу, спасибо.
Кодесмис посмотрел, а эмит не нашел в гугле.
Здравствуйте, 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 .
Здравствуйте, GlebZ, Вы писали:
GZ>Здравствуйте, Lyubitel_Sovershenstva, Вы писали:
L_S>>Угу, спасибо. L_S>>Кодесмис посмотрел, а эмит не нашел в гугле. GZ>Лучше в MSDN. Ключевое слово System.Reflection.Emit.
L_S>>А фришное что-нибудь есть? GZ>Можно считать так.
GZ>С уважением, Gleb.