ConditionalAttribute Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen koşullu derleme sembolü tanımlanmadığı sürece bir metot çağrısının veya özniteliğin yoksayılması gerektiğini derleyicilere gösterir.
public ref class ConditionalAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)]
public sealed class ConditionalAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=true)]
[System.Serializable]
public sealed class ConditionalAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ConditionalAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)>]
type ConditionalAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=true)>]
[<System.Serializable>]
type ConditionalAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ConditionalAttribute = class
inherit Attribute
Public NotInheritable Class ConditionalAttribute
Inherits Attribute
- Devralma
- Öznitelikler
Örnekler
Aşağıdaki örnekte kullanımı gösterilmektedir ConditionalAttribute. Örnekte koşulun /define derleyici seçeneğiyle tanımlandığı varsayılır. Derleyici seçeneğini değiştirerek farklı sonuçlar elde edebilirsiniz. İsteğe bağlı olarak, koşulları derleyici seçenekleri olarak tanımlamak yerine örnek kodda pragmalar kullanarak tanımlayabilirsiniz.
#define CONDITION1
#define CONDITION2
using System;
using System.Diagnostics;
class Test
{
static void Main()
{
Console.WriteLine("Calling Method1");
Method1(3);
Console.WriteLine("Calling Method2");
Method2();
Console.WriteLine("Using the Debug class");
Debug.Listeners.Add(new ConsoleTraceListener());
Debug.WriteLine("DEBUG is defined");
}
[Conditional("CONDITION1")]
public static void Method1(int x)
{
Console.WriteLine("CONDITION1 is defined");
}
[Conditional("CONDITION1"), Conditional("CONDITION2")]
public static void Method2()
{
Console.WriteLine("CONDITION1 or CONDITION2 is defined");
}
}
/*
When compiled as shown, the application (named ConsoleApp)
produces the following output.
Calling Method1
CONDITION1 is defined
Calling Method2
CONDITION1 or CONDITION2 is defined
Using the Debug class
DEBUG is defined
*/
#Const CONDITION1 = True
#Const CONDITION2 = True
Imports System.Diagnostics
Class Test
Shared Sub Main()
Console.WriteLine("Calling Method1")
Method1(3)
Console.WriteLine("Calling Method2")
Method2()
Console.WriteLine("Using the Debug class")
Debug.Listeners.Add(New ConsoleTraceListener())
Debug.WriteLine("DEBUG is defined")
End Sub
<ConditionalAttribute("CONDITION1")> _
Shared Sub Method1(x As Integer)
Console.WriteLine("CONDITION1 is defined")
End Sub
<ConditionalAttribute("CONDITION1"), ConditionalAttribute("CONDITION2")> _
Shared Sub Method2()
Console.WriteLine("CONDITION1 or CONDITIOIN2 is defined")
End Sub
End Class
' When compiled as shown, the application (named ConsoleApp)
' produces the following output.
'Calling Method1
'CONDITION1 is defined
'Calling Method2
'CONDITION1 or CONDITION2 is defined
'Using the Debug class
'DEBUG is defined
Açıklamalar
özniteliğini ConditionalAttribute yöntemlere ve sınıflara uygulayabilirsiniz. Ancak, sınıflarda kullanımı yalnızca türünden Attributetüretilen türler için geçerlidir. ConditionalAttribute yoksayılır veya başka bir türe uygularsanız derleyici uyarısı veya hata iletisi oluşturur.
ConditionalAttribute Bir yönteme uygulama, derleyicilere, ile ilişkilendirilmiş ConditionalAttribute koşullu derleme simgesi tanımlanmadığı sürece yöntemine yönelik bir çağrının Microsoft ara diline (MSIL) derlenmemesi gerektiğini belirtir. Bu özniteliği void döndürmeyen bir yönteme uygularsanız Visual Studio'da derleme hatası alırsınız. ConditionalAttribute Bir özniteliğe uygulama, koşullu derleme simgesi tanımlanmadığı sürece özniteliğin meta veriye yayılmaması gerektiğini gösterir. Yönteme veya özniteliğe geçirilen tüm bağımsız değişkenler, derleyici tarafından tür denetimi yapmaya devam eder.
Koşullu derleme simgelerini tanımlamak için aşağıdaki teknikleri kullanabilirsiniz:
Derleyici komut satırı seçeneklerini kullanın; örneğin, /define:DEBUG.
İşletim sistemi kabuğunda ortam değişkenlerini kullanın; örneğin DEBUG=1 değerini ayarlayın.
Kaynak kodda pragmaları kullanın; örneğin, derleme değişkenini aşağıdaki gibi tanımlayın:
#define DEBUG
#Const DEBUG=True
Değişkenin tanımlarını silmek için aşağıdakileri kullanın:
#undef DEBUG
#Const DEBUG=False
Ortak Dil Belirtimine (CLS) uyan derleyicilerin yok saymalarına ConditionalAttributeizin verilir. C#, F#, Visual Basic ve C++ derleyicileri destekler ConditionalAttribute; JScript derleyicisi özniteliğini desteklemez.
Not
Visual Basic'te AddressOf
işleç bu öznitelikten etkilenmez. Örneğin, Call CType(AddressOf delegate, Action)
her zaman çağrısında bulunur delegate
, ancak Call delegate()
çağırılmayabilir.
ConditionalAttributeve Trace sınıflarında tanımlanan yöntemlere Debug uygulanır.
Öznitelikleri kullanma hakkında daha fazla bilgi için bkz . Öznitelikler.
Oluşturucular
ConditionalAttribute(String) |
ConditionalAttribute sınıfının yeni bir örneğini başlatır. |
Özellikler
ConditionString |
Özniteliğiyle ConditionalAttribute ilişkili koşullu derleme simgesini alır. |
TypeId |
Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır. (Devralındığı yer: Attribute) |
Yöntemler
Equals(Object) |
Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür. (Devralındığı yer: Attribute) |
GetHashCode() |
Bu örneğe ilişkin karma kodu döndürür. (Devralındığı yer: Attribute) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
IsDefaultAttribute() |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir. (Devralındığı yer: Attribute) |
Match(Object) |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. (Devralındığı yer: Attribute) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
Belirtik Arabirim Kullanımları
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler. (Devralındığı yer: Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır. (Devralındığı yer: Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1). (Devralındığı yer: Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar. (Devralındığı yer: Attribute) |