Öznitelikler (F #)
Öznitelikler meta verilerin bir programlama yapısına uygulanmasını sağlar.
Syntax
[<target:attribute-name(arguments)>]
Açıklamalar
Önceki sözdiziminde, hedef isteğe bağlıdır ve varsa, özniteliğin uygulandığı program varlığının türünü belirtir. Target için geçerli değerler, bu belgenin ilerleyen kısımlarında görüntülenen tabloda gösteriliyor.
Öznitelik adı , Attribute genellikle öznitelik türü adlarında kullanılan soneke sahip olan veya olmayan geçerli bir öznitelik türünün adı (ad alanları ile nitelenme) anlamına gelir. Örneğin, türü ObsoleteAttribute yalnızca bu bağlamda kısaltılarak yapılabilir Obsolete .
Bağımsız değişkenler öznitelik türü için oluşturucunun bağımsız değişkenidir. Bir özniteliğin parametresiz oluşturucusu varsa, bağımsız değişken listesi ve parantezleri atlanabilir. Öznitelikler hem Konumsal bağımsız değişkenleri hem de adlandırılmış bağımsız değişkenleri destekler. Konumsal bağımsız değişkenler göründükleri sırada kullanılan bağımsız değişkenlerdir. Adlandırılmış bağımsız değişkenler, özniteliğinde ortak özellikler varsa kullanılabilir. Bunları, bağımsız değişken listesinde aşağıdaki sözdizimini kullanarak ayarlayabilirsiniz.
property-name = property-value
Bu tür özellik başlatmaları herhangi bir sırada olabilir, ancak bunların herhangi bir Konumsal bağımsız değişkeni izlemesi gerekir. Aşağıda Konumsal bağımsız değişkenleri ve özellik başlatmaları kullanan bir özniteliğe örnek verilmiştir:
open System.Runtime.InteropServices
[<DllImport("kernel32", SetLastError=true)>]
extern bool CloseHandle(nativeint handle)
Bu örnekte, özniteliği DllImportAttribute kısaltılmış biçimde kullanılır. İlk bağımsız değişken bir Konumsal parametredir ve ikincisi bir özelliktir.
Öznitelikler, bir öznitelik olarak bilinen bir nesnenin bir tür veya diğer program öğesiyle ilişkilendirilmesi için bir .NET programlama yapısıdır. Bir özniteliğin uygulandığı program öğesi öznitelik hedefi olarak bilinir. Özniteliği genellikle hedefi hakkında meta veriler içerir. Bu bağlamda meta veriler, alanları ve üyeleri dışındaki türle ilgili herhangi bir veri olabilir.
F # içindeki öznitelikler şu programlama yapılarına uygulanabilir: işlevler, Yöntemler, derlemeler, modüller, türler (sınıflar, kayıtlar, yapılar, arabirimler, temsilciler, numaralandırmalar, birleşimler, vb.), oluşturucular, özellikler, alanlar, parametreler, tür parametreleri ve dönüş değerleri. letSınıfların, ifadelerin veya iş akışı ifadelerinin içindeki bağlamalarda özniteliklere izin verilmez.
Genellikle, öznitelik bildirimi doğrudan öznitelik hedefinin bildiriminden önce görünür. Birden çok öznitelik bildirimi, aşağıdaki gibi birlikte kullanılabilir:
[<Owner("Jason Carlson")>]
[<Company("Microsoft")>]
type SomeType1 =
.NET Reflection kullanarak çalışma zamanında öznitelikleri sorgulayabilirsiniz.
Bir önceki kod örneğinde olduğu gibi birden çok özniteliği ayrı ayrı bildirebilir veya bağımsız öznitelikleri ve oluşturucuları ayırmak için noktalı virgül kullanırsanız, bunları bir parantez kümesinde bildirebilirsiniz:
[<Owner("Darren Parker"); Company("Microsoft")>]
type SomeType2 =
Tipik Obsolete olarak, öznitelik, güvenlik açısından dikkat edilecek öznitelikler, com desteği öznitelikleri, kod sahipliğiyle ilgili öznitelikler ve bir türün seri hale getirilebilir olup olmadığını belirten öznitelikler içerir. Aşağıdaki örnek, özniteliğinin kullanımını gösterir Obsolete .
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 hedefleri için assembly module , özniteliklerini derlemenizin en üst düzey do bağlamaya uygularsınız. Word 'ü assembly veya ``module`` öznitelik bildirimine aşağıdaki gibi ekleyebilirsiniz:
open System.Reflection
[<assembly:AssemblyVersionAttribute("1.0.0.0")>]
[<``module``:MyCustomModuleAttribute>]
do
printfn "Executing..."
Bir bağlamaya uygulanan bir özniteliğin öznitelik hedefini atlarsanız do , F # derleyicisi bu öznitelik için anlamlı olan öznitelik hedefini saptamaya çalışır. Birçok öznitelik sınıfı System.AttributeUsageAttribute , bu öznitelik için desteklenen olası hedefler hakkında bilgi içeren türünde bir özniteliğe sahiptir. Eğer System.AttributeUsageAttribute özniteliğinin işlevleri hedef olarak desteklediğini gösteriyorsa, öznitelik programın ana giriş noktasına uygulanacak şekilde alınır. Eğer System.AttributeUsageAttribute özniteliğin derlemeleri hedef olarak desteklediğini gösteriyorsa, derleyici özniteliği derlemeye uygulanacak şekilde alır. Çoğu öznitelik hem işlevler hem de derlemeler için geçerlidir, ancak oldukları durumlarda özniteliği programın ana işlevine uygulanacak şekilde alınır. Öznitelik hedefi açıkça belirtilirse, öznitelik belirtilen hedefe uygulanır.
Genellikle öznitelik hedefini açıkça belirtmeniz gerekmese de, bir öznitelikte target için geçerli değerler, kullanım örnekleri ile birlikte aşağıdaki tabloda gösterilmiştir:
| Öznitelik hedefi | Örnek |
|---|---|
| derleme | |
| modül | |
| return | |
| alan | |
| özellik | |
| larına | |
| tür |
|