Aracılığıyla paylaş


Arayan Bilgileri (C# ve 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, System.Runtime.CompilerServices ad alanında tanımlanan Arayan Bilgisi öznitelikleri listelenmektedir:

Ö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 konudaki Üye Adları bölümüne bakın.

String

Örnek

Aşağıdaki örnekte, Arayanın Bilgisi özniteliklerinin nasıl kullanılacağı gösterilmiştir.TraceMessage yöntemine yapılan her çağrıda, arayanın bilgileri isteğe bağlı parametrelerin bağımsız değişkenleri 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
public void DoProcessing()
{
    TraceMessage("Something happened.");
}

public void TraceMessage(string message,
        [System.Runtime.CompilerServices.CallerMemberName] string memberName = "",
        [System.Runtime.CompilerServices.CallerFilePath] string sourceFilePath = "",
        [System.Runtime.CompilerServices.CallerLineNumber] int sourceLineNumber = 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);
}

// Sample Output: 
//  message: Something happened. 
//  member name: DoProcessing 
//  source file path: c:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoCS\CallerInfoCS\Form1.cs 
//  source line number: 31

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 durumlara yönelik StackTrace özelliğinin sonuçlarının tersine, sonuçlar gizlemeden 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 String bağımsız değişkeni olarak belirtmekten kaçınmak için CallerMemberName özniteliğini kullanabilirsiniz.Bu tekniği kullanarak, Yeniden Düzenlemeyi Yeniden Adlandırma'nın String değerlerini değiştirmemesine ilişkin sorunu önleyebilirsiniz.Bu, özellikle aşağıdaki görevler için yararlı olur:

  • İzleme ve tanılama yordamlarını kullanma.

  • Verileri bağlarken INotifyPropertyChanged arabirimini uygulama.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, CallerMemberName özniteliğini kullandığınızda 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.

Ayrıca bkz.

Başvuru

Öznitelikler (C# ve Visual Basic)

Kavramlar

Ortak Öznitelikler (C# ve Visual Basic)

İsteğe Bağlı Parametreler (Visual Basic)

Adlandırılmış ve İsteğe Bağlı Bağımsız Değişkenler (C# Programlama Kılavuzu)

Diğer Kaynaklar

Programlama Kavramları