[Mono-list] Question about attributes
Jonathan Stowe
mono-lists@lists.ximian.com
Thu, 29 Apr 2004 09:09:27 +0100
On Thu, 2004-04-29 at 07:56, xiii29@free.fr wrote:
> Hi,
>
> First : Thanks for the explanation ;-)
>
> But my question what about which attributes using in order to document methods
> or function in my code.
>
> For example, if you want the Visual Studio .Net Property Panel to be able to
> display info about your properties you have to use
> System.ComponentModel.Description("The description").
>
You can do just the same with mono:
using System;
using System.ComponentModel;
class MyTest
{
[Description("Test")]
public void whatever()
{
}
}
Will work (i.e. compile) just fine. Whether or not it is any use is
whether the tools you want to use can get at this information. The
DescriptionAttribute is used for design time purposes (i.e. to display
in the properties panel of a visual tool) rather than strictly for
documentation, if you want to autogenerate documentation from your code
you might me better of using the XML documentation comments rather than
this.
Of course you can create your own attributes by inheriting from
System.Attribute as documented on MSDN and elsewhere.
/J\
> This is a Visual Studio .Net rules.
>
> Now my question is : of I want to add documention to my methods, class etc...
> which meta-attributes do I use ?
>
> Maybe there is no dedicated attributes and I will have to create my owns...
>
> Thierry !
>
>
> Selon Jonathan Pryor <jonpryor@vt.edu>:
>
> > On Wed, 2004-04-28 at 16:46, Xiii29 wrote:
> > > I've question about attributes in Mono. I would like to comment my
> > > assemblys by using attributes (meta-attributes...) and i'm wondering if
> > > there is "rules" (or preconisations...) about which attributes using...
> >
> > I'm pretty sure I don't understand your question at all. But I'll take
> > a shot anyway...
> >
> > To use an assembly-level attribute, you need to explicitly specify what
> > the attribute is associated with. For example:
> >
> > [assembly: AssemblyTitle ("my title")]
> > [assembly: AssemblyVersion ("1.0.*")]
> >
> > The "assembly:" indicates that the attribute applies to the assembly.
> > Otherwise it would apply to the next member listed in the file
> > (delegate, class, structure, etc.) or generate an error (namespaces
> > don't support attributes). Similar things can be done for other
> > elements; for example: "return:" can be used to place an attribute on
> > the return type of a method, while normally the attribute applies to the
> > method itself:
> >
> > [SomeAttribute ("applies to MyMethod")]
> > [return: SomeAttribute ("applies to the return type")]
> > int MyMethod () {return 42;}
> >
> > As for general rules... You can only use attributes which can be
> > applied to an assembly; that is, the attribute you're trying to use must
> > itself have an AttributeUsage attribute with AttributeTargets.Assembly
> > specified. Not all attributes do this; the DllImport attribute, for
> > example, can only be applied to methods.
> >
> > Aside from that, the normal attribute restrictions apply. Which means
> > that attribute positional and named parameters can only be: one of the
> > CLS-compliant built-in types (bool, byte, char, double, float, int,
> > long, short, string); System.Type, an enum type; System.Object; or an
> > array of one of the previous types.
> >
> > See a good C# book, or MSDN, or google, for more information.
> >
> > - Jon
> >
> >
> >
>
>
> _______________________________________________
> Mono-list maillist - Mono-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list