Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> изменение значений атрибутов в Runtime 
:(
    Опции темы
rukudias
Дата 7.10.2008, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 28.2.2007

Репутация: нет
Всего: 0



Привет Всем!
Вопрос седующий
есть класс. у класса проперти у каждой проперти атрибут
класс атрибут имеет след вид
Код

class DataReadable :Attribute
    {
        string txtx;
       
        public DataReadable():this("1")
        {

        }
         public DataReadable(string txtx)
        {
            this.txtx = txtx;
        }
        public string TXTX
        {
            get
            {
                return txtx;
            }
            set 
            {
                txtx = value;
            }
        }
        
    }



как вовремя ислолнения кода изменить значение атрибута?


PM MAIL   Вверх
MasterOfCode
Дата 7.10.2008, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Изменить значение можно только на какое-нибудь событие. Просто так оно не поменяется. Например подписываешься на клик по кнопке, там уже имея экземпляр класса меняешь значение его поля.


--------------------
user posted image
PM ICQ   Вверх
rukudias
Дата 7.10.2008, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 28.2.2007

Репутация: нет
Всего: 0



попчем так!
Код

namespace atrib
{
    class DataReadable :Attribute
    {
        string txtx;
       
        public DataReadable():this("1")
        {

        }
         public DataReadable(string txtx)
        {
            this.txtx = txtx;
        }
        public string TXTX
        {
            get
            {
                return txtx;
            }
            set 
            {
                txtx = value;
            }
        }
        
    }
    public class Element
    {
     
        string m_firma;

        #region property
        [DataReadable("123")]
        public string FIRMA
        {
            set
            {
                m_firma = value;
            }
            get
            {
                return m_firma;
            }
        }

               #endregion
        
    }
}



гдето в main
Код


static void Main(string[] args)
        {
            Element m_obj = new Element();
            Element m_obj2 = new Element();
            Type m_type = m_obj.GetType();
            object[] m_array = m_type.GetProperties();

            foreach (PropertyInfo temp in m_array)
            {
                    
                    object [] attribov=temp.GetCustomAttributes(true);
                    foreach (DataReadable te in attribov)
                    {
                        Console.WriteLine(te.TXTX);
                        Type atrib= te.GetType();
                        PropertyInfo pr=atrib.GetProperty("TXTX");
                        pr.SetValue(te, "321", null);

                        //te.TXTX = "321";
                        //Console.WriteLine(te.TXTX);
                    } 
            }

что то типо этого
НО
при следущ просмотре атрибутов тогоже обьекта они не изменились!
PM MAIL   Вверх
diadiavova
Дата 7.10.2008, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Просто всякий раз, когда ты пытаешься проверить значение свойства атрибута, ты создаёшь его новый экземпляр. Если тебе надо, чтобы все экземпляры атрибута возвращали одно значение, тогда сделай поле, в котором хранится значение свойства статическим. Правда в этом случае атрибут будет возвращать одинаковое значение для всех классов, для которых ты его определишь. Чтобы этого избежать, надо значение свойства хранить в статическом поле самого класса, а в атрибуте организовать механизм доступа к этому полю. Получится полная фигня, но работает(я попробовал).


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.