Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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, hiçbirinin gereksinimlerinizi karşılamaması halinde kendi özel özel durumunuzu oluşturabilirsiniz.
Özellik içeren StudentNotFoundException bir StudentName oluşturmak istediğinizi varsayalım.
Özel özel durum oluşturmak için şu adımları izleyin:
öğesinden Exceptiondevralan bir sınıf oluşturun. Sınıf adı "Özel Durum" ile bitmelidir:
public class StudentNotFoundException : Exception { }Public Class StudentNotFoundException Inherits Exception End ClassVarsayılan oluşturucuları ekleyin:
public class StudentNotFoundException : Exception { public StudentNotFoundException() { } public StudentNotFoundException(string message) : base(message) { } public StudentNotFoundException(string message, Exception inner) : base(message, inner) { } }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 ClassEk özellikleri ve oluşturucuları tanımlayın:
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; } }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 dilin kaynaklarını içeren bir DLL'dir. Ç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> 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
TestProjectprojenin Resources klasöründe bulunuyorsa, kaynak dosyasının tam adı olur.TestProject.Resources.ExceptionMessages