Здравствуйте, 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
Здравствуйте, para, Вы писали:
P>Здравствуйте, hardcase, Вы писали:
H>>Здравствуйте, para, Вы писали:
P>поэкспериментировал с ними:
P>они не на что не влияют, правильно?
Странно, всегда считал что влияют,
вон даже в библиотеке макросов эти свойства довольно таки часто задаются.