2013-04-26 8 views
9

Mam kawałek kodu:Możliwość dziedziczenia z WebClient bez mojego kodu będącego "komponentem czasu projektowania"?

public class NoFollowWebClient : WebClient 
{ 
    protected override WebRequest GetWebRequest(Uri address) 
    { 
     var request = (HttpWebRequest)base.GetWebRequest(address); 
     request.AllowAutoRedirect = false; 
     return request; 
    } 
} 

Ilekroć dodać to do pliku .cs chociaż, Visual Studio 2012, w jego nieskończonej mądrości, zamienia mój plik # źródłowy C do „składnika czasu projektowania” . Tak więc, kiedy dwukrotnie klikam plik, zamiast widzieć mój kod C#, widzę "Aby dodać komponenty do klasy, przeciągnij je z Przybornika i użyj okna Właściwości, aby ustawić ich właściwości".

Wiem, że mogę kliknąć prawym przyciskiem myszy i zrobić "kod widoku", ale to bardzo denerwujące.

Czy mimo to należy zmusić program Visual Studio, aby nie zakładał, że komponuję lub dbam o ich głupiego projektanta wizualnego, który nie służy celowi dla mojej klasy?

+0

Może zajrzyj do pliku XML 'csproj'. Upewnij się, że jest oznaczony jako wpis typu ". EDYCJA: Być może jest oznaczony jako zupełnie inny rodzaj pliku; upewnij się, że nie ma pod nim znacznika podrzędnego ' Designer . –

Odpowiedz

11

Problem polega na tym, że Visual Studio automatycznie dodać

<SubType>Component</SubType> 

w pliku .csproj jak najszybciej dziedziczą WebClient. Nawet jeśli spróbujesz to usunąć, Visual Studio doda go ponownie po ponownym otwarciu projektu.

Rozwiązaniem jest dodanie do klasy następującego atrybutu.

[System.ComponentModel.DesignerCategory("Code")] 
+1

To nie działa w Visual Studio 2013. – Kyle

+0

W VS2013 użyłem następujących wskazówek z innego wątku i wszystko działało dobrze: 1. Użyj pełnej klasy System.ComponentModel.Designer, nie polegaj na użyciu. 2. Zmodyfikuj plik .csproj i usuń komponent ze znacznika Kompiluj dla tej klasy (i dla bezpieczeństwa zmodyfikuję znacznik Kompilacja tak, aby był samozamykający się, podobnie jak inne). Można to łatwo zlikwidować przez przypadek, więc może się okazać, że robisz to więcej niż raz, jeśli modyfikujesz swoją klasę. – RobinHood70