SORU
30 EYLÜL 2008, Salı


Özel Derleyici Uyarıları

Bu ObsoleteAtribute kullanırken .Sen derleyici uyarı özelliği/nesne/yöntem ve gereksiz bir şey olduğunu haber verir Net başka kullanılmalıdır. Halen eski çalışanlarla kodu yeniden düzenleme gerektiren bir proje üzerinde çalışıyorum. Yazdığım mesajları veren derleyici uyarılarını oluşturacak yöntemleri veya özellikleri işaretlemek için kullanabileceğiniz özel bir öznitelik yazmak istiyorum. Bunun gibi bir şey

[MyAttribute("This code sux and should be looked at")]
public sub DoEverything(){}

Bu yazan derleyici bir uyarı oluşturmak istiyorum, "Bu kod sux ve gözden geçirilmelidir". Özel bir öznitelik oluşturma, asıl soru bunu nasıl visual studio derleyici uyarıları üretmek için neden ben biliyorum.

CEVAP
30 EYLÜL 2008, Salı


Eğer bu işe yarar mı bilmiyorum ama bir deneyin değer.

Eski, son, çünkü uzatmak mümkün değil ama belki kendi özniteliği oluşturun, ve sınıf, bu gibi eski mark:

[Obsolete("Should be refactored")]
public class MustRefactor: System.Attribute{}

O zaman senin yöntemleri "" özniteliği, uyarıları göster. belki derleme MustRefactor işaretlediğinizde

Dedim ki "belki" ve "" bu hiç denemedim çünkü. Lütfen çalışmıyor diye bana cevap ortadan kaldıracağım.

Saygılar!

GÜNCELLEME: Test edildi. Zaman uyarı derleme, ama hata iletisini komik görünüyor, kendi gözlerinizle görmeniz ve seçmeniz gereken bir oluşturur. Bunu başarmak için ne istediğini çok yakındır.

UPDATE2: this code this warnings (ama daha iyi bir şey olduğunu sanmıyorum hiç hoş değil) oluşturur.

public class User
{
    private String userName;

    [TooManyArgs] // Will show warning: Try removing some arguments
    public User(String userName)
    {
        this.userName = userName;   
    }

    public String UserName
    {
        get { return userName; }
    }
    [MustRefactor] // will show warning: Refactor is needed Here
    public override string ToString()
    {
        return "User: "   userName;
    }
}
[Obsolete("Refactor is needed Here")]
public class MustRefactor : System.Attribute
{

}
[Obsolete("Try removing some arguments")]
public class TooManyArgs : System.Attribute
{

}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CNNMoney

    CNNMoney

    16 Kasım 2006
  • Chaîne de TheMoustic

    Chaîne de T

    5 Kasım 2006
  • ThisWeekYT

    ThisWeekYT

    14 Mart 2013