det inde i []'en henviser til en type du har et sted... dvs. at når der står noget inde i paranteserne kommer der argumenter med til types constructor.
derudover har jeg fået indtryk at hvis man ikke skriver () i enden på klassenavnen, bliver den parameterløse constructor kaldet. Jeg har dog ikke umiddelbart kunne finde noget omkring lige det på nettet.
Men f.eks. WebMethod - det er en klasse, helt exact System.Web.Services.WebMethod
Ved at oprette en instans af den klasse og sende med som property giver man compileren noget at arbejde med.
Så når f.eks. at STAThreadAttribute-klassen ser sådan her ud
[AttributeUsage(AttributeTargets.Method)] public sealed class STAThreadAttribute : Attribute
betyder det at den attribute kun må bruges på en Metode. Compileren vil altså få en instans af AttributeUsageAttribute'n, og kan ved hjælp af den aflæse hvordan at STAThreadAttributen må bruges. Og dybere nede får selve .Net CLR'en at vide at programmet skal starte i Single-threaded Apartment da der er brugt en STAThread-property på Main()-metoden.
osv. osv.
jeg har nogle eksempler jeg kan vise hvor man i sin egen kode også kan aflæse værdierne af de evt forskellige attributer der måtte findes, hvis du er interreseret.
:) whe.. en måned, bedre sent end aldrig *pudser glorien*
nå, lad os se... eksemplet består af tre dele. Først laver vi vores attribut-klasse, som samtidig indeholder mulighed for at aflæse attributerne og dernæst skal den bruges. (Eksemplet er fra bogen C# af Bo Brink (rædsom bog)).
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)] public class Forfatter : System.Attribute { public string Navn; public string Aar;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.