SORU
11 EYLÜL 2009, Cuma


En iyi durum geçersiz genel tür bağımsız değişken için

Şu anda çeteleler ile genel yöntemler vardır UnconstrainedMelody için bazı kod yazıyorum.

Şimdi, hangi yöntemleri bir sürü statik Dersim varsadece"bayraklar" çeteleler. kullanılacak demek Bir kısıtlama olarak Ekle edemem... diğer numaralama türleri ile de adı verilecek bu mümkün değil. Bu durumda bir istisna atmak istiyorum ama atmak için emin değilim.

Sadece eğer böyle bir şey varsa bu beton yapmak için:

// Returns a value with all bits set by any values
public static T GetBitMask<T>() where T : struct, IEnumConstraint
{
    if (!IsFlags<T>()) // This method doesn't throw
    {
        throw new ???
    }
    // Normal work here
}

Atmak için en iyi durum nedir? ArgumentException mantıklı geliyor, ama değilyazıntartışma yerine kolayca karışık olabilir normal bir tartışma. TypeArgumentException kendi sınıfıma tanıştırayım mı? InvalidOperationException kullan? NotSupportedException? Başka bir şey?

İstiyorumdeğilaçıkça bunu yapmak için doğru şey olmadığı sürece bu benim özel durum oluşturmaz.

CEVAP
11 EYLÜL 2009, Cuma


NotSupportedExceptiongeliyorsanki açık uyuyor, ama bu belgeleri farklı bir amaç için kullanılması gerektiği açıkça ifade edilmektedir. Açıklamalar: web sınıftan

Olmayan yöntemler vardır temel sınıf ile desteklenen beklenti bu yöntemler olacak türetilmiş sınıflarda uygulanan yerine. Belki türetilmiş sınıf bu yöntem, yalnızca bir alt kümesini uygulamak temel sınıfından ve at İçin NotSupportedException desteklenmeyen bir yöntem.

Özellikle sağduyu anlamıyla anlaşılması elbette, hangi NotSupportedException belli ki yeterince iyi bir yolu var. Bunu söyledikten sonra, eğer doğru ise emin değilim.

Unconstrained Melody ... amacıyla verildi

Genel ile yapılabilecek çeşitli yararlı şeyler var yöntemleri "T : numaralama" ya da "T :türü kısıtlaması var bulunduğu sınıf/ "- ama ne yazık ki, bu C yasaktır#. temsilci

Bu programı kütüphane yasaklar etrafında ıldasm/ılasm kullanarak çalışır ...

... Exception ispat yükü yüksek olmasına rağmen kabul edilebilir bir yeni gibi görünüyor adil özel oluşturmadan önce karşılamak için var Exceptions. InvalidTypeParameterException gibi bir şey kitaplığı boyunca yararlı olabilir (ya da belki de değil - bu kesinlikle bir kenar durumda, değil mi?).

Müşteriler KÜÇÜK İstisna dışında bu ayırt edebilmek gerekir? Ne zaman bir müşteri yanlışlıkla bu bir vanilya enum kullanarak diyebilir? Nasıl sorular 14* *kabul cevabın yarattığı cevap verir misiniz

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andytokkallos

    Andytokkallo

    27 Kasım 2007
  • DrePwn

    DrePwn

    22 Temmuz 2011
  • Friday NightFort

    Friday Night

    15 EYLÜL 2011