Öznitelikler (F#)
Öznitelikler bir programlama yapısı için uygulanacak meta verileri sağlar.
[<target:attribute-name(arguments)>]
Notlar
Önceki sözdiziminde, target isteğe bağlıdır ve varsa, öznitelik uygulandığı program varlık türünü belirtir. İçin geçerli değerler target bu belgede görünen tabloda gösterilen.
attribute-name (Büyük olasılıkla nitelenmiş ad alanlarıyla) adı ile veya soneki olmayan bir geçerli öznitelik türü başvurduğu Attribute , genellikle öznitelik türü adları kullanılır. Örneğin, tür ObsoleteAttribute just için kısaltılmış Obsolete bu bağlamda.
arguments Oluşturucuya bağımsız değişkenler için öznitelik türü. Bir varsayılan kurucu bir özniteliði varsa, bağımsız değişken listesi ve parantez atlanabilir. Öznitelikler, hem Konumsal bağımsız hem de adlandırılmış bağımsız değişkenleri destekler. Konumsal bağımsız göründükleri sırada kullanılan bağımsız değişkenlerdir. Adlandırılmış bağımsız değişkenleri öznitelik ortak özellikleri varsa kullanılabilir. Bu bağımsız değişken listesinde aşağıdaki sözdizimini kullanarak ayarlayabilirsiniz.
property-name = property-value
Özellik atamaların herhangi bir sırada olabilir, ancak Konumsal herhangi bir bağımsız değişken izlemelidir. Konumsal bağımsız değişkenleri ve özellik başlatmaları kullanan bir öznitelik örneği aşağıda verilmektedir.
open System.Runtime.InteropServices
[<DllImport("kernel32", SetLastError=true)>]
extern bool CloseHandle(nativeint handle)
Bu örnekte özniteliği, DllImportAttribute, burada kısaltılmış kullanılır. İlk bağımsız değişken, Konumsal bir parametredir ve ikinci bir özelliktir.
Öznitelikler bir.Bir nesne olarak bilinen sağlayan net programlama yapısı bir özniteliği bir tür ya da diğer program öğe ile ilişkili. Bir öznitelik uygulanan program öğesi olarak bilinen özniteliği hedef. Öznitelik, genellikle hedefine hakkında meta verileri içerir. Bu bağlamda, herhangi bir veri türü alanını ve üyeleri dışında hakkında meta veri olabilir.
F# öznitelikleri aşağıdaki programlama yapýya uygulanabilir: İşlevler, yöntemler, derlemeler, modülleri, türleri (sınıfları, kayıt, yapıları, arabirimleri, temsilciler, numaralandırma, sendikalar ve benzeri), Kurucular, özellikleri, alanlar, parametreleri, tür parametreleri ve dönüş değerleri. Öznitelikleri üzerinde izin yok let sınıfları, deyimlerde ya da iş akışı deyimler içinde bağlar.
Tipik olarak, doğrudan özniteliği hedef bildiriminden önce öznitelik bildirimi görüntülenir. Birden çok öznitelik bildirimleri kullanılabilir birlikte, aşağıdaki gibi.
[<Owner("Jason Carlson")>]
[<Company("Microsoft")>]
type SomeType1 =
Kullanarak çalışma zamanında özniteliklerini sorgulayabilir.net yansıma.
Önceki kod örneği gibi ayrı ayrı birden çok özniteliği bildirebilirsiniz veya noktalı tek öznitelikler ve kurucular ayırmak için aşağıda gösterildiği gibi kullanırsanız, bunları köşeli bir dizi bildirebilirsiniz.
[<Owner("Darren Parker"); Company("Microsoft")>]
type SomeType2 =
Genellikle karşılaşılan öznitelikleri dahil Obsolete com desteği, kod sahipliğini ilişkili öznitelikleri ve öznitelik türü seri hale getirilmiş olup olmadığını belirten öznitelik, güvenlik konuları için öznitelikleri öznitelikleri. Aşağıdaki örnek kullanımını gösterir Obsolete özniteliği.
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
Öznitelik hedeflerine assembly ve module, öznitelikler için bir üst düzey uygulama do , derleme bağlama. Word içerebilir assembly veya module öznitelik bildiriminde aşağıdaki gibi.
open System.Reflection
[<assembly:AssemblyVersionAttribute("1.0.0.0")>]
do
printfn "Executing..."
Uygulanan bir öznitelik için öznitelik hedef'yi bir do bağlama, F# derleyicisi anlamlı bu öznitelik için öznitelik hedef belirlemeye çalışır. Birçok öznitelik sınıfı türü bir özniteliğin sahip AttributeUsageAttribute bu öznitelik için desteklenen olası hedefleri hakkında bilgi içerir. AttributeUsageAttribute Özniteliği hedefleri olarak işlevlerini destekler, programın ana giriş noktası uygulamak için öznitelik alınır gösterir. AttributeUsageAttribute Derlemeler hedefleri olarak özniteliğini destekler, derleyici derleme uygulamak için öznitelik alır gösterir. Çoğu öznitelikleri işlevleri ve derlemeler için geçerli değildir, ancak burada yaptıklarını durumlarda özniteliği için programın ana işlevi uygulamak için alınır. Öznitelik hedef açıkça belirtilirse, belirtilen hedef özniteliği uygulanır.
Öznitelik açıkça, hedef için geçerli değerler genellikle belirtmeniz gerekmez, ancak target bir öznitelik kullanım örnekleri ile birlikte aşağıdaki tabloda gösterilmiştir.
Öznitelik hedef |
Örnek |
---|---|
derleme |
[<assembly: AssemblyVersionAttribute("1.0.0.0")>] |
Return |
let function1 x : [<return: Obsolete>] int = x + 1 |
alan |
[<field: DefaultValue>] val mutable x: int |
özellik |
[<property: Obsolete>] this.MyProperty = x |
param |
member this.MyMethod([<param: Out>] x : ref<int>) = x := 10 |
type |
[<type: StructLayout(Sequential)>] type MyStruct = struct x : byte y : int end |