Atributy (F#)
Atributy povolit metadat pro programovací konstrukce.
[<target:attribute-name(arguments)>]
Poznámky
V předchozích syntaxe target je nepovinný a je-li přítomen, určuje druh program entita, která se týká atribut.Platné hodnoty pro target jsou uvedeny v tabulce dále v tomto dokumentu.
attribute-name Odkazuje na název (případně kvalifikovaný s obory názvů) platný atribut typu s nebo bez přípony Attribute obvykle používané názvy typu atributu.Například zadejte ObsoleteAttribute lze zkrátit těsně Obsolete v tomto kontextu.
arguments Argumenty konstruktoru pro typ atributu.Pokud výchozí konstruktor atributu, lze vynechat seznam argumentů a závorek.Atributy podporu argumentů umístění a pojmenované argumenty.Poziční argumenty jsou argumenty, které jsou použity v pořadí, v jakém jsou uvedeny.Pokud má atribut veřejné vlastnosti lze použít pojmenované argumenty.Můžete nastavit tyto pomocí následující syntaxe v seznamu argumentů.
property-name = property-value
Inicializace těchto vlastností může být v libovolném pořadí, ale musí dodržovat poziční argumentů.Je příklad atribut, který používá argumentů umístění a vlastnosti inicializace.
open System.Runtime.InteropServices
[<DllImport("kernel32", SetLastError=true)>]
extern bool CloseHandle(nativeint handle)
V tomto příkladu je atribut DllImportAttribute, zde použité ve zkráceném tvaru.První argument poziční parametr a druhá vlastnost.
Atributy jsou.NET programovací konstrukce, která umožňuje známé jako objekt atributu být přidružen typ nebo jiného prvku programu.Program prvek, na který je použit atribut je označován jako atribut target.Atribut obvykle obsahuje metadata o jeho cíl.V této souvislosti metadat může být žádná data o typu než jeho polí a členy.
Atributy v F# lze použít následující programovací konstrukce: funkce, metody, sestavení, moduly, typy (třídy, záznamy, struktury, rozhraní, delegátů, výčty, odborů a podobně), konstruktory, vlastnosti, polí, parametry, parametry typu a vrácené hodnoty.Atributy nejsou povoleny v let vazby uvnitř třídy, výrazy nebo výrazy pracovního postupu.
Deklarace atributu se obvykle zobrazí přímo před prohlášení atribut target.Více deklarací atribut lze použít společně, takto.
[<Owner("Jason Carlson")>]
[<Company("Microsoft")>]
type SomeType1 =
Atributy můžete dotaz za běhu pomocí.NET odraz.
Více atributů můžete deklarovat jednotlivě, jako v předchozím příkladu kódu nebo můžete deklarovat v jedné sadě závorek Pokud použijte středník pro oddělení jednotlivých atributů a konstruktory, jak je znázorněno zde.
[<Owner("Darren Parker"); Company("Microsoft")>]
type SomeType2 =
Obvykle došlo k atributy patří Obsolete atributy atribut atributy pro důležité informace o zabezpečení pro podporu, atributy, které se týkají vlastnictví kód a atributy určující, zda lze serializovat typ COM.Následující příklad ukazuje použití Obsolete atributu.
open System
[<Obsolete("Do not use. Use newFunction instead.")>]
let obsoleteFunction x y =
x + y
let newFunction x y =
x + 2 * y
// The use of the obsolete function produces a warning.
let result1 = obsoleteFunction 10 100
let result2 = newFunction 10 100
Pro atribut cíle assembly a module, použít atributy k nejvyšší úrovně do vazby ve vašem sestavení.Mohou zahrnovat slovo assembly nebo module v deklaraci atributu způsobem.
open System.Reflection
[<assembly:AssemblyVersionAttribute("1.0.0.0")>]
do
printfn "Executing..."
Pokud vynecháte cílový atribut u atributu do vazbu, kompilátor F# pokouší určit atribut target, smysl pro daný atribut.Mnoho tříd atribut atributem typu AttributeUsageAttribute , který obsahuje informace o možné cíle pro tento atribut podporován.Pokud AttributeUsageAttribute označuje, že atribut podporuje funkce jako cíle, atribut je přijata na hlavní vstupní bod programu.Pokud AttributeUsageAttribute označuje, že podporuje atribut sestavení jako cíle, kompilátor trvá atribut pro sestavení.Většina atributy se nevztahují na funkce a sestavení, ale v případech, kde tomu tak je, přijatá atribut použít hlavní funkce programu.Pokud explicitně zadán atribut target, atribut u zadaného cíle.
Ačkoli obvykle nepotřebujete zadat atribut cíl explicitně, platné hodnoty pro target v atributu jsou uvedeny v následující tabulce spolu s příklady použití.
Atribut target |
Příklad |
---|---|
assembly |
[<assembly: AssemblyVersionAttribute("1.0.0.0")>] |
vrátit |
let function1 x : [<return: Obsolete>] int = x + 1 |
Pole |
[<field: DefaultValue>] val mutable x: int |
vlastnost |
[<property: Obsolete>] this.MyProperty = x |
Parametr |
member this.MyMethod([<param: Out>] x : ref<int>) = x := 10 |
typ |
[<type: StructLayout(Sequential)>] type MyStruct = struct x : byte y : int end |