96 / 96 / 16
Регистрация: 28.01.2008
Сообщений: 426
1

Программное изменение, добавление, удаление атрибутов у свойств класса

24.02.2011, 10:00. Показов 9437. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно и интересует вопрос как программно изменить, добавить, удалить атрибуты у свойств класса???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2011, 10:00
Ответы с готовыми решениями:

Добавление, изменение, удаление данных в бд
Здравствуйте помогите пожалуйста, ни как не могу понять как в wpf при нажатии на определенную...

Добавление, изменение и удаление строк dataGridView
Добрый вечер, форумчане. Помогите пожалуйста, кто сможет. Ситуация такая: есть форма с объектом...

DataViewGrid удаление/изменение/добавление и отражение действий в БД
Вопрос по DataViewGrid Вот так подключаюсь и вывожу на грид String connectionstring =...

Программное добавление свойств классу
У нас есть пустой клас public class testclass { } как можно в него добавить свойства ввида...

16
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
24.02.2011, 11:48 2
Никак это метаданные (как константы) при компиляции они записываются в dll и их нельзя изменить
0
96 / 96 / 16
Регистрация: 28.01.2008
Сообщений: 426
24.02.2011, 12:48  [ТС] 3
а зачем тогда существуют методы GetAttribute, SetAttribute и тому подобные???
0
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
24.02.2011, 13:36 4
Эти методы работают с Xml текстом, или если вам нужно работать в ASP.NET то там вроде тоже такое возможно. Т.е. SetAttribute просто дописывает строчку в текст.
А если мы говорим о dll то там уже машинный код...
0
60 / 60 / 6
Регистрация: 07.09.2010
Сообщений: 259
24.02.2011, 13:54 5
Sanprof,наследовать и переопределять не помогает?
0
96 / 96 / 16
Регистрация: 28.01.2008
Сообщений: 426
24.02.2011, 14:12  [ТС] 6
Цитата Сообщение от servitola Посмотреть сообщение
наследовать и переопределять не помогает?
все делается в runtime. Тоесть у меня есть свой класс, у свойств которого есть свои атрибуты, в runtime мне нужно оперировать атрибутами определенных свойств данного класса.
0
60 / 60 / 6
Регистрация: 07.09.2010
Сообщений: 259
24.02.2011, 14:15 7
Цитата Сообщение от Sanprof Посмотреть сообщение
? все делается в runtime. Тоесть
Sanprof, это не твои классы??
можно сделать общий абстрактный класс и переключать между его реализациями с различными наборами атрибутов.
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
24.02.2011, 14:35 8
Цитата Сообщение от d0s'A Посмотреть сообщение
Эти методы работают с Xml текстом, или если вам нужно работать в ASP.NET то там вроде тоже такое возможно. Т.е. SetAttribute просто дописывает строчку в текст.
ТС говорит об атрибутах, причем здесь XML и ASP.NET?
Цитата Сообщение от d0s'A Посмотреть сообщение
А если мы говорим о dll то там уже машинный код...
Машинного кода там нет, там код на промежуточном языке и метаданные.

Sanprof, посмотрите в пространствах имен System.Reflection.Emit и System.Reflection, если и искать решение, то там.
0
96 / 96 / 16
Регистрация: 28.01.2008
Сообщений: 426
24.02.2011, 15:05  [ТС] 9
немного шире опишу свою ситуацию, на форме есть propertygrid и контролы, в которых я добавил n-ое количество своих свойств, атрибутами которых я и хочу оперировать, а именно в зависимости от установленого значения свойства, нужно к примеру изменить атрибут у других(ого) свойств(а) (этого класса) Browsable(true) на Browsable(false) или изменить DisplayName( "Тра-ла-ла" ) на DisplayName( "Тру-лу-лу" ). Как это реализовать вот я не знаю.
0
60 / 60 / 6
Регистрация: 07.09.2010
Сообщений: 259
24.02.2011, 15:10 10
Sanprof, ооо....тоже недавно пропертигрид начал делать...пока не дошло, чтоб мне атрибуты пришлось менять....возможно сделать 2 варианта поля, и когда делаешь выборку атрибутов из класса - брать то один, то другой..
0
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
25.02.2011, 07:14 11
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
ТС говорит об атрибутах, причем здесь XML и ASP.NET?
А в xml нет атрибутах? Ты знаешь где есть такие методы Set и Get Attribute? По моему они в как раз в тех разделах
http://social.msdn.microsoft.c... ibute&ac=8

Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Машинного кода там нет, там код на промежуточном языке и метаданные.
Согласен, но я думаю не стоит сейчас пересказывать книжку CLR via C#. Я пытался объяснить на понятном языке.

Sanprof, Если ты сделаешь virtual свойство в базовом классе и унаследуешься, то можно изменять значения атрибутов так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    public class A
    {
        [ReadOnly(true)]
        public virtual int Field { get; set; }
    }
 
    public class B : A
    {
        [ReadOnly(false)]
        public override int Field
        {
            get
            {
                return base.Field;
            }
            set
            {
                base.Field = value;
            }
        }
    }
0
96 / 96 / 16
Регистрация: 28.01.2008
Сообщений: 426
25.02.2011, 09:10  [ТС] 12
Цитата Сообщение от d0s'A Посмотреть сообщение
Если ты сделаешь virtual свойство в базовом классе и унаследуешься, то можно изменять значения атрибутов так:
в Design-time это-то понятно, а вот как в Runtime на метод set у одного из свойств проанализировать его значение и в зависимости от того какое оно (к примеру true или false) скрыть некоторые свойства (из browsable(true) в browsable(false))???
0
25 / 25 / 5
Регистрация: 11.11.2009
Сообщений: 56
25.02.2011, 10:49 13
Пример использования.
Создаем класс ForExample
C#
1
2
3
4
5
6
7
8
9
10
11
class ForExample
    {
        private string _myString = "Init my string";
 
        [DefaultValue("Defauly MyTest")]
        public string MyString
        {
            get { return _myString; }
            set { _myString = value; }
        }
    }
Используем описанный атрибут
C#
1
2
3
4
5
6
7
8
    PropertyInfo propertyInfo = typeof(ForExample).GetProperty("MyString");
    // получаем атрибут, который определили
    DefaultValueAttribute attribut = (DefaultValueAttribute)Attribute.GetCustomAttribute(propertyInfo, typeof(DefaultValueAttribute));
    Console.WriteLine(attribut.Value.ToString()); // Выведит: Defauly MyTest
    ForExample test = new ForExample();
    Console.WriteLine(test.MyString); // Выведит: Init my string
    propertyInfo.SetValue(test, "New string value", null);
    Console.WriteLine(test.MyString); // Выведит: New string value
1
96 / 96 / 16
Регистрация: 28.01.2008
Сообщений: 426
25.02.2011, 13:55  [ТС] 14
Вобщем помогло прочтение книги Павла Агурова "Разработка компонентов в MS Visual Studio 2005/2008" Глава 8
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
25.02.2011, 19:39 15
Цитата Сообщение от d0s'A Посмотреть сообщение
А в xml нет атрибутах?
Есть, но как XML может быть связан со свойствами класса?
Цитата Сообщение от Sanprof Посмотреть сообщение
Собственно и интересует вопрос как программно изменить, добавить, удалить атрибуты у свойств класса???
Цитата Сообщение от d0s'A Посмотреть сообщение
Я пытался объяснить на понятном языке.
Объяснять на понятном языке и вводить человека в заблуждение, говоря явную чушь, - это разные вещи.
0
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
27.02.2011, 19:11 16
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Объяснять на понятном языке и вводить человека в заблуждение, говоря явную чушь, - это разные вещи.
Вроде бы человека я не ввел в заблуждение. Если ты хочешь по флудить тебе в другую тему

Sanprof
На счет возможностей PropertyGrid советую посмотреть статью
http://www.rsdn.ru/article/dot... ridFAQ.xml
0
96 / 96 / 16
Регистрация: 28.01.2008
Сообщений: 426
28.02.2011, 09:40  [ТС] 17
Цитата Сообщение от d0s'A Посмотреть сообщение
На счет возможностей PropertyGrid советую посмотреть статью http://www.rsdn.ru/article/dot... ridFAQ.xml
Спасибо, посмотрел, но это все есть в книге Павла Агурова только немного в другом виде.
0
28.02.2011, 09:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2011, 09:40
Помогаю со студенческими работами здесь

Добавление, удаление и изменение в ComboBox
Здравствуйте. В WPF реализовал построитель предложений с помощью ComboBox, ListBox и GroupBox. Не...

Программное добавление и удаление объектов
Добрый день ! Создаю кнопку private void Create_button(string name_button , string...

Изменение свойств контроллов из класса
Здравствуйте! Возникла необходимость управлять лейблом формы. Для отображения ошибок работы...

Изменение свойств элементов формы из другого класса
Подскажите пожалуйста как из класса FormCondition... class FormCondition { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru