Arayan Bilgileri (Visual Basic)
Arayan Bilgisi özniteliklerini kullanarak bir yöntemin arayanı hakkında bilgi edinebilirsiniz. Kaynak kodunun dosya yolunu, kaynak kodundaki satır numarasını ve arayanın üye adını alabilirsiniz. Bu bilgiler, tanılama araçlarının izlenmesine, oluşturulmasına ve bu araçlarda hata ayıklanmasına yardımcı olur.
Bu bilgileri elde etmek için her biri varsayılan değere sahip isteğe bağlı parametrelere uygulanan öznitelikler kullanabilirsiniz. Aşağıdaki tabloda, ad alanında System.Runtime.CompilerServices tanımlanan Arayan Bilgisi öznitelikleri listelenir:
Öznitelik | Açıklama | Tür |
---|---|---|
CallerFilePathAttribute | Kaynak dosyasının arayanı içeren tam yolu. Bu, derleme zamanındaki dosya yoludur. | String |
CallerLineNumberAttribute | Yöntemin çağrıldığı kaynak dosyadaki satır numarası. | Integer |
CallerMemberNameAttribute | Arayanın yöntemi veya özellik adı. Bu konunun devamında yer alan Üye Adları bölümüne bakın. | String |
CallerArgumentExpressionAttribute | Çağıran tarafından bağımsız değişken için kullanılan ifade. Bu konunun devamında yer alan Arayan İfadeleri bölümüne bakın. | String |
Örnek
Aşağıdaki örnekte, Arayanın Bilgisi özniteliklerinin nasıl kullanılacağı gösterilmiştir. Yöntemine yapılan TraceMessage
her çağrıda, çağıran bilgileri isteğe bağlı parametrelere bağımsız değişken olarak değiştirilir.
Private Sub DoProcessing()
TraceMessage("Something happened.")
End Sub
Public Sub TraceMessage(message As String,
<System.Runtime.CompilerServices.CallerMemberName> Optional memberName As String = Nothing,
<System.Runtime.CompilerServices.CallerFilePath> Optional sourcefilePath As String = Nothing,
<System.Runtime.CompilerServices.CallerLineNumber()> Optional sourceLineNumber As Integer = 0)
System.Diagnostics.Trace.WriteLine("message: " & message)
System.Diagnostics.Trace.WriteLine("member name: " & memberName)
System.Diagnostics.Trace.WriteLine("source file path: " & sourcefilePath)
System.Diagnostics.Trace.WriteLine("source line number: " & sourceLineNumber)
End Sub
' Sample output:
' message: Something happened.
' member name: DoProcessing
' source file path: C:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoVB\CallerInfoVB\Form1.vb
' source line number: 15
Açıklamalar
Her isteğe bağlı parametre için açık bir varsayılan değer belirtmeniz gerekir. İsteğe bağlı olarak belirtilmeyen parametrelere Arayan Bilgisi özniteliklerini uygulayamazsınız.
Arayan Bilgisi öznitelikleri, bir parametreyi isteğe bağlı hale getirmez. Bunun yerine, bağımsız değişken atlandığında geçirilen varsayılan değeri etkilerler.
Arayan Bilgisi değerleri, derleme zamanında Ara Dile (IL) değişmez değerler olarak verilir. Özel durumlar için özelliğinin StackTrace sonuçlarından farklı olarak, sonuçlar karartmadan etkilenmez.
Arayan bilgisini denetlemek veya gizlemek için isteğe bağlı bağımsız değişkenleri açıkça sağlayabilirsiniz.
Üye Adları
Üye adını çağrılan yöntemin CallerMemberName
bağımsız String
değişkeni olarak belirtmekten kaçınmak için özniteliğini kullanabilirsiniz. Bu tekniği kullanarak, Yeniden Düzenlemeyi Yeniden Adlandır'ın değerleri değiştirmemesi String
sorununu önlersiniz. Bu, özellikle aşağıdaki görevler için yararlı olur:
İzleme ve tanılama yordamlarını kullanma.
Verileri bağlarken arabirimi uygulama INotifyPropertyChanged . Bu arabirim, bir nesnenin özelliğinin bağlama denetimine özelliğin değiştirildiğini bildirmesini ve böylece denetimin güncelleştirilmiş bilgileri görüntüleyebilmesini sağlar.
CallerMemberName
özniteliği olmadan, özellik adını değişmez değer olarak belirtmeniz gerekir.
Aşağıdaki grafik, özniteliğini kullandığınızda CallerMemberName
döndürülen üye adlarını gösterir.
Çağrının oluştuğu yer | Üye adı sonucu |
---|---|
Yöntem, özellik veya olay | Yöntemin, özelliğin veya aramanın kaynaklandığı olayın adı. |
Oluşturucu | ".ctor" dizesi |
Statik oluşturucu | ".cctor" dizesi |
Yok edici | "Finalize" dizesi |
Kullanıcı tanımlı işleçler veya dönüştürmeler | Üye için oluşturulan "op_Addition" gibi bir ad. |
Öznitelik oluşturucu | Özniteliğin uygulandığı üyenin adı. Öznitelik bir üye içerisindeki herhangi bir öğeyse (parametre, dönüş değeri veya genel tür parametresi gibi), bu sonuç bu öğeyle ilişkili öğenin adıdır. |
İçeren üye yok (örneğin, derleme düzeyi veya türlere uygulanan öznitelikler) | İsteğe bağlı parametrenin varsayılan değeri. |
Çağıran ifadeleri
Bir bağımsız değişken için kullanılan ifadeyi yakalamak istediğinizde öğesini kullanırsınız System.Runtime.CompilerServices.CallerArgumentExpressionAttribute . Tanılama kitaplıkları, bağımsız değişken olarak geçirilen ifadeler hakkında daha fazla ayrıntı sağlamak isteyebilir. Geliştiriciler, parametre adına ek olarak tanılamayı tetikleyen ifadeyi sağlayarak tanılamayı tetikleyen koşul hakkında daha fazla ayrıntıya sahiptir. Bu ek bilgiler düzeltmeyi kolaylaştırır. Aşağıdaki yöntem, olması gereken True
koşulu görüntülemek için öğesini CallerArgumentExpressionAttribute kullanır:
Public Shared Sub ValidateArgument(ByVal parameterName As String,
ByVal condition As Boolean,
<CallerArgumentExpression("condition")> ByVal Optional message As String? = Nothing)
If Not condition Then
Throw New ArgumentException($"Argument failed validation: <{message}>", parameterName)
End If
End Sub