Yerelleştirilmiş özel durum iletileriyle kullanıcı tanımlı özel durumlar oluşturma
Bu makalede, uydu derlemelerini kullanarak yerelleştirilmiş özel durum iletileriyle temel Exception sınıftan devralınan kullanıcı tanımlı özel durumlar oluşturmayı öğreneceksiniz.
Özel özel durumlar oluşturma
.NET, kullanabileceğiniz birçok farklı özel durum içerir. Ancak, bazı durumlarda bunların hiçbiri gereksinimlerinizi karşılamadığında kendi özel özel durumlarınızı oluşturabilirsiniz.
Özellik içeren StudentName
bir StudentNotFoundException
oluşturmak istediğinizi varsayalım.
Özel özel durum oluşturmak için şu adımları izleyin:
öğesinden Exceptiondevralan serileştirilebilir bir sınıf oluşturun. Sınıf adı "Özel Durum" ile bitmelidir:
[Serializable] public class StudentNotFoundException : Exception { }
<Serializable> Public Class StudentNotFoundException Inherits Exception End Class
Varsayılan oluşturucuları ekleyin:
[Serializable] public class StudentNotFoundException : Exception { public StudentNotFoundException() { } public StudentNotFoundException(string message) : base(message) { } public StudentNotFoundException(string message, Exception inner) : base(message, inner) { } }
<Serializable> Public Class StudentNotFoundException Inherits Exception Public Sub New() End Sub Public Sub New(message As String) MyBase.New(message) End Sub Public Sub New(message As String, inner As Exception) MyBase.New(message, inner) End Sub End Class
Ek özellikleri ve oluşturucuları tanımlayın:
[Serializable] public class StudentNotFoundException : Exception { public string StudentName { get; } public StudentNotFoundException() { } public StudentNotFoundException(string message) : base(message) { } public StudentNotFoundException(string message, Exception inner) : base(message, inner) { } public StudentNotFoundException(string message, string studentName) : this(message) { StudentName = studentName; } }
<Serializable> Public Class StudentNotFoundException Inherits Exception Public ReadOnly Property StudentName As String Public Sub New() End Sub Public Sub New(message As String) MyBase.New(message) End Sub Public Sub New(message As String, inner As Exception) MyBase.New(message, inner) End Sub Public Sub New(message As String, studentName As String) Me.New(message) StudentName = studentName End Sub End Class
Yerelleştirilmiş özel durum iletileri oluşturma
Özel bir özel durum oluşturdunuz ve bunu aşağıdaki gibi bir kodla herhangi bir yere atabilirsiniz:
throw new StudentNotFoundException("The student cannot be found.", "John");
Throw New StudentNotFoundException("The student cannot be found.", "John")
Önceki satırla ilgili sorun, yalnızca sabit bir dize olmasıdır "The student cannot be found."
. Yerelleştirilmiş bir uygulamada, kullanıcı kültürüne bağlı olarak farklı iletilere sahip olmak istersiniz.
Uydu derlemeleri bunu yapmak için iyi bir yoldur. Uydu derlemesi, belirli bir dile yönelik kaynakları içeren bir .dll. Çalışma zamanında belirli bir kaynak istediğinizde, CLR bu kaynağı kullanıcı kültürüne bağlı olarak bulur. Bu kültür için hiçbir uydu derlemesi bulunamazsa, varsayılan kültürün kaynakları kullanılır.
Yerelleştirilmiş özel durum iletilerini oluşturmak için:
Kaynak dosyalarını tutmak için Kaynaklar adlı yeni bir klasör oluşturun.
Bu dosyaya yeni bir kaynak dosyası ekleyin. Visual Studio'da bunu yapmak için, Çözüm Gezgini'da klasöre sağ tıklayın ve Yeni Öğe>Kaynakları Dosyası Ekle'yi>seçin. Dosyayı ExceptionMessages.resx olarak adlandırın. Bu, varsayılan kaynaklar dosyasıdır.
Aşağıdaki resimde gösterildiği gibi özel durum iletiniz için bir ad/değer çifti ekleyin:
Fransızca için yeni bir kaynak dosyası ekleyin. ExceptionMessages.fr-FR.resx olarak adlandırın.
Özel durum iletisi için yeniden bir ad/değer çifti ekleyin, ancak Fransızca değerle:
Projeyi derledikten sonra derleme çıktı klasörü, uydu derlemesi olan bir .dll dosyası içeren fr-FR klasörünü içermelidir.
Aşağıdaki gibi bir kodla özel durum oluşturursunuz:
var resourceManager = new ResourceManager("FULLY_QUALIFIED_NAME_OF_RESOURCE_FILE", Assembly.GetExecutingAssembly()); throw new StudentNotFoundException(resourceManager.GetString("StudentNotFound"), "John");
Dim resourceManager As New ResourceManager("FULLY_QUALIFIED_NAME_OF_RESOURCE_FILE", Assembly.GetExecutingAssembly()) Throw New StudentNotFoundException(resourceManager.GetString("StudentNotFound"), "John")
Not
Proje adı ise ve ExceptionMessages.resx kaynak dosyası projenin Resources klasöründe bulunuyorsa, kaynak dosyasının tam adı olur
TestProject.Resources.ExceptionMessages
.TestProject
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin