Attribute multicasting has been primarily designed as a mechanism to add aspects to a program. Most of the time, the custom attribute representing an aspect can be removed when the aspect has been applied.
By default, if you add a multicast attribute to a program and
look at the resulting program using a disassembler or
System.Reflection, you will not find these custom
attributes.
If you need your MulticastAttribute
to be reflected by System.Reflection or any other
tool, you have to set the PersistMetaData property of
the MulticastAttributeUsageAttribute
to true.
For instance:
[MulticastAttributeUsage( MulticastTargets.Class, PersistMetaData = true )]
public class TagAttribute : MulticastAttribute
{
public string Tag;
}