2009-03-11 20 views
3

Olası Çoğalt:
Why are C# collection-properties not flagged as obsolete when calling properties on them?ObsoleteAttribute karışıklık

Ben bir mülke ObsoleteAttribute uygulamak istiyorum, ancak herhangi ki derleyici yalnızca özelliğin doğrudan kullanımı için uyarı/hata üretir görünüyor dolaylı kullanım sessizce göz ardı edilir.

Aşağıdaki örnek çok iyi sorunu göstermektedir düşünüyorum:

using System; 
class Program 
{ 
    static void Main(string[] args) 
    { 
     var o = new Old(); 
     Console.WriteLine(o.Geezer); // compilation fails: 'ObsoleteAttributeTest.Program.Old.Geezer' is obsolete: 'Some error' 
     Console.WriteLine(o.Geezer.Attributes); // compiles OK 
    } 

    class Old 
    { 
     [ObsoleteAttribute("Some error", true)] 
     public System.Xml.XmlElement Geezer { get { return null; } } 
    } 
} 
+0

Saniye; MS bağlantısı: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=417159 –

+0

3 dakika, şimdi etkileyici, milletlere teşekkürler! Yinelenen gönderim için üzgünüm:/ – dolzenko

+0

Resmi yanıt: http://stackoverflow.com/questions/577132/why-are-c-collection-properties-not-flagged-as-obsolete-when-calling-properties/652824#652824 –

cevap

0

var o = new Old(); hata atar. hatası CS0246: "var" tür veya ad alanı adı bulunamadı (kullanma yönergesi veya montaj referansı eksik misiniz?) Bunu eski olarak değiştirirse o = new Old(); hala ikinci satır, hatası CS0619 gibi bir hata atar: 'Program.Old.Geezer' eskidir: 'Bazı hata' . Burada neler olup bittiğini alıyorum .. !!!!!!!!!!

+0

En son C# derleyici sürümünü kullandığımı belirtmeliydim. 2.0 veya daha büyük bir şey kullanıyorsunuz, bu mesajı kontrol edin (ayrıca yukarıda, btw) http://stackoverflow.com/questions/577132/why-are-c-collection-properties-not-flagged-as-obsolete -ne zaman-çağırarak-özelliklerini/577152 # 577152 – dolzenko