Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Как узнать к чему "прикреплен" атрибут из него?


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


/*
чегоб такого тут , или не тут написать, чтобы приклеить этот атрибут можно было только к классам наследникам 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
{
}

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

Автор: jonie 30.7.2008, 20:48
м... а можно пример на основе того кода что выше дал я?

Автор: Idsa 30.7.2008, 21:56
jonie, напутал я. Похоже, так сделать нельзя.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)