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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать к чему "прикреплен" атрибут из него? 
:(
    Опции темы
jonie
Дата 29.7.2008, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



собствнно сабж.
Суть такая: пусть есть атрибут. и его скажем нужно давать "прикреплять" (кстати, как эот по научному зовется?) только к классам, наследующих определеный интерфейс.
например:
Код


/*
чегоб такого тут , или не тут написать, чтобы приклеить этот атрибут можно было только к классам наследникам INeedThisInterface ?
*/
[AttributeUsage(AttributeTargets.Class)]
class MyAttribute : Attribute {
 private readonly string m_s;
 public MyAttribute(string s) { m_s = s; }
 public string S 
 {
  get {  return m_s; }
 }
}

[MyAttribute("some abstract class")]
class abstract SomeClass : INeedThisInterface
{
  public virtual string S
 {
  get 
 {
                Type t = this.GetType();
                Object[] attribs = t.GetCustomAttributes(false);
                foreach (Attribute attrib in attribs)
                {
                    if (attrib is MyAttribute)
                    {
                        return ((MyAttribute)attrib).S;
                    }
                }
                return string.Empty();
  }
 }
}


/*
 this class provide property S, it must return "some otherclass" string...
*/
[MyAttribute("some otherclass")]
class SomeOtherClass : SomeClass
{
}



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Idsa
Дата 29.7.2008, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 6
Всего: 62



jonie, нужно использовать Attribute Target: http://msdn.microsoft.com/en-us/library/b3787ac0(VS.71).aspx


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
jonie
Дата 30.7.2008, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



м... а можно пример на основе того кода что выше дал я?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Idsa
Дата 30.7.2008, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 6
Всего: 62



jonie, напутал я. Похоже, так сделать нельзя.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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