CA1032: Standart özel durum oluşturucuları uygulayın
TypeName |
ImplementStandardExceptionConstructors |
CheckId |
CA1032 |
Kategori |
Microsoft.Design |
Değişiklik kesiliyor |
Bölünemez |
Neden
Bir tür genişleten Exception ve gerekli tüm Kurucular bildirmiyor.
Kural Tanımı
Özel durum türü aşağıdaki Kurucular uygulamalısınız:
Ortak NewException()
Ortak NewException(string)
Ortak NewException (dize, özel durum)
Korunan veya özel NewException (SerializationInfo, StreamingContext)
Kurucular kümesini kasıt doğru özel durumlarý iþlemek zor yapabilirsiniz.Örneğin, imzası bulunan kurucu NewException(string, Exception) tarafından diğer özel durumlar nedeniyle özel durumlar oluşturmak için kullanılır.Oluşturmak ve bir örneğini (iç içe geçmiş) iç özel durum içeren özel özel durum bu, hangi hangi yönetilen kod böyle bir durumda yapmanız gereken kurucudur.Kural gereği ilk üç özel durum Kurucular ortaktır.Dördüncü Ağzı açık bir sınıf içinde korumalı ve mühürlenmiş sınıflar, özel kurucudur.Daha fazla bilgi için bkz. CA2229: Serileştirme oluşturucularını uygulayın
İhlalleri düzeltmek nasıl
Bu kuralı ihlal düzeltmek için eksik Kurucular özel durumu ekleme ve doğru erişilebilirlik sahip olduğunuzdan emin olun.
Uyarıları ne zaman
Genel oluşturucuları için farklı erişim düzeyi kullanarak ihlaline neden bir uyarı bu kuraldan bastırmak güvenlidir.
Örnek
Aşağıdaki örnek, bu kuralı ihlal eden bir özel durum türü ve doğru şekilde uygulanan bir özel durum türü içerir.
using System;
using System.Runtime.Serialization;
namespace DesignLibrary
{
// Violates rule ImplementStandardExceptionConstructors.
public class BadException : Exception
{
public BadException()
{
// Add any type-specific logic, and supply the default message.
}
}
[Serializable()]
public class GoodException : Exception
{
public GoodException()
{
// Add any type-specific logic, and supply the default message.
}
public GoodException(string message): base(message)
{
// Add any type-specific logic.
}
public GoodException(string message, Exception innerException):
base (message, innerException)
{
// Add any type-specific logic for inner exceptions.
}
protected GoodException(SerializationInfo info,
StreamingContext context) : base(info, context)
{
// Implement type-specific serialization constructor logic.
}
}
}