SORU
16 Ocak 2009, Cuma


Eğer gizleme amacı eğer yeni bir anahtar kelime kullanın

"Eğer gizleme" VS2008 uyarı: . amacı eğer yeni bir anahtar kelime Kullanın üreten aşağıdaki kod parçası var

public double Foo(double param)
{
   return base.Foo(param);
}

Temel sınıf Foo() koruma fonksiyonu ve birim test amaçlı sarıcı sınıfta sadece koyarak bir birim test için bunu ifşa etmek istiyorum. I. e. sarıcı sınıf başka bir şey için kullanılmayacaktır. Ben bir soru:bu uygulama kabul edilir?

new uyarı geri.Neden bu senaryoda geçersiz kılma işlevi yeni gerek?

CEVAP
16 Ocak 2009, Cuma


new sadece varolan bir yöntem stomping üzerinde olan her şeyi açıkça anlatıyor. Varolan kod büyük bir anlaşma değil mi protected, beri - güvenli new inleyen durdurmak için ekleyebilirsiniz.

Fark yöntemi farklı bir şey yaptığında geliyor; herhangi bir değişkeni başvuruyortüretilmişFoo() farklı bir şey yapacağı sınıf ve aramaları (aynı nesne bile) başvuran biri olaraktabansınıf ve aramalar Foo():

SomeDerived obj = new SomeDerived();
obj.Foo(); // runs the new code
SomeBase objBase = obj; // still the same object
objBase.Foo(); // runs the old code

Bu tabii ki SomeDerived haberi Foo() - yani artık tamamen farklı bir yöntem çalıştığı çağıran varolan kod üzerinde bir etkisi olabilir.

Ayrıca, unutmayın ki mark protected internal [InternalsVisibleTo] erişim sağlamak için bir birim test (bu en yaygın kullanım [InternalsVisibleTo]; sonra birim testleri erişimi olmadan doğrudan türetilmiş sınıf.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • itfigueres

    itfigueres

    12 EKİM 2013
  • Mega64

    Mega64

    24 ŞUBAT 2006
  • xCraash

    xCraash

    6 Temmuz 2012