SORU
22 Mayıs 2009, Cuma


Orada herhangi bir şekilde C# uzantısı yöntemi ile bir sınıf yöntemi geçersiz kılmak için?

Uzantısı yöntemi ile bir sınıf yöntemi geçersiz kılmak isterim vesilelerle olmuştur. C bunu yapmak için herhangi bir yolu var# mı?

Örneğin:

public static class StringExtension
{
    public static int GetHashCode(this string inStr)
    {
        return MyHash(inStr);
    }
}

Dava nerede istiyordum yapmak yapabilmek için mağaza karmasının bir dize içine bir veritabanı ve aynı değeri olmak üzere, tüm sınıfları kullanmak için string sınıfının karma (yani Sözlük, vb.) -İnşa beri .Karma algoritma bir sonraki Çerçeve sürümünden uyumlu olmasını garanti edilmez Net, benim kendi ile değiştirmek istiyorum.

Uzantısı yöntemi ile bir sınıf yöntemi string sınıfı için sadece özel değil yani geçersiz kılmak isterdim nerede karşılaştığım diğer dava veya GetHashCode yöntemi vardır.

Varolan bir sınıf sınıflara off ile bunu yapabileceğimi biliyorum ama bir çok olayda uzantılı bunu yapabilmek için kullanışlı olurdu.

CEVAP
22 Mayıs 2009, Cuma


Hayır; bir uzantısı yöntemi hiç uygun bir imza ile bir örnek yöntemi önceliklidir, ve asla polimorfizmi katılır (GetHashCode virtual bir yöntemdir).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jordie Jordan

    Jordie Jorda

    27 Ocak 2008
  • Marques Brownlee

    Marques Brow

    21 Mart 2008
  • Michael Zhang

    Michael Zhan

    8 EYLÜL 2012