MacroUsage(... , Inherited = true, AllowMultiple = false)
От: para  
Дата: 01.03.10 09:14
Оценка:
Где можно почитать про описание параметров макросов
Inherited и AllowMultiple
Re: MacroUsage(... , Inherited = true, AllowMultiple = false
От: hardcase Пират http://nemerle.org
Дата: 01.03.10 09:19
Оценка:
Здравствуйте, para, Вы писали:

P>Где можно почитать про описание параметров макросов

P>Inherited и AllowMultiple

В МСДНе. MacroUsage это алиас к AttributeUsageAttribute.
http://nemerle.org/Banners/?t=Developer!&g=dark /* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: MacroUsage(... , Inherited = true, AllowMultiple = fa
От: para  
Дата: 01.03.10 10:52
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, para, Вы писали:


P>>Где можно почитать про описание параметров макросов

P>>Inherited и AllowMultiple

H>В МСДНе. MacroUsage это алиас к AttributeUsageAttribute.


Inherited Возвращает или устанавливает логическое значение типа, указывающее, может ли указанный атрибут наследоваться производными классами и переопределенными членами.
AllowMultiple Возвращает или задает логическое значение, указывающее, возможно ли для одного элемента программы задать более одного экземпляра указанного атрибута.


поэкспериментировал с ними:
они не на что не влияют, правильно?
макрос:
    [MacroUsage(MacroPhase.WithTypedMembers, MacroTargets.Class, Inherited = true, AllowMultiple = false)]
    public macro Macro2(_tb : TypeBuilder, params _options : list[PExpr])
    {  
        Macro2Helper.ModifyMethods(_tb);  
    }    

    module Macro2Helper
    {
        public ModifyMethods(_tb : TypeBuilder) : void
        {   
            def mList = _tb.GetMethods();   
            foreach( mb is MethodBuilder in mList) 
            {
                mb.Body = <[
                    WriteLine("aa");
                    $(mb.Body)
                ]>;
            }
        }
    }

программа
    [Macro2]
    [Macro2]
    class C
    {
        public virtual M() : void
        {
            WriteLine("111");
        }
    }    

    class B : C
    {
        public override M() : void
        {
            WriteLine("222");
        }
    }

    module Program
    {
      Main() : void
      {
          def c = C();
          c.M();          

         WriteLine("Hi!");

          def b = B();
          b.M();      

        _ = ReadLine();
      }
    }

output
aa
aa
111
Hi!
222
Re[3]: MacroUsage(... , Inherited = true, AllowMultiple = fa
От: hardcase Пират http://nemerle.org
Дата: 01.03.10 11:32
Оценка:
Здравствуйте, para, Вы писали:

P>Здравствуйте, hardcase, Вы писали:


H>>Здравствуйте, para, Вы писали:


P>поэкспериментировал с ними:

P>они не на что не влияют, правильно?

Странно, всегда считал что влияют, вон даже в библиотеке макросов эти свойства довольно таки часто задаются.
http://nemerle.org/Banners/?t=Developer!&g=dark /* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.