2010-07-22 7 views
9

Czy istnieje sposób automatycznego tworzenia konstruktora dla klasy na podstawie właściwości klasy, takiej jak Eclipse? (Bez uzyskania ReSharper). Używam Visual Studio 2008 (C#).Automatyczne tworzenie Konstruktora przy użyciu pól/właściwości w Visual Studio (jak Eclipse ma)

Jeśli jest to duplikat, proszę połączyć (próbowałem wyszukiwania).

+2

http://stackoverflow.com/questions/2976363/how-do-i-generate-a-constructor-from-class-fields-using-visual-studio-and-or-re –

+0

Możliwy duplikat [Jak wygenerować konstruktora z pól klasy za pomocą Visual Studio (i/lub ReSharper)?] (Https: // stackoverflow.com/questions/2976363/how-do-i-generate-a-constructor-from-class-fields-using-visual-studio-and-or-re) –

Odpowiedz

8

Nie. Istnieje fragment kodu Ctor (nie do końca tego, czego szukałeś) lub możesz utworzyć swoje makro. Ewentualnie sprawdź Productivity macros for C#. A ponieważ nie lubisz ReSharper, możesz użyć CodeRush.

+0

Dla jasności, nie jestem anty-ReSharper. Po prostu nie mogę go teraz pobrać na tej maszynie, więc liczyłem na to, że jest zbudowany. Ten przykład CodeRush jest dokładnie tym, o czym myślałem. – Awaken

+0

Link do odpowiedzi jest martwy, czy jest jakiś sposób na odświeżenie? –

+1

@TolgaEvcimen blast z przeszłości, link zaktualizowany. –

7

można użyć object initializer zamiast tworzyć konstruktora, jeśli używasz C# 3.0.

Kod kierujący, który znalazłem w pewnym przykładzie.

class Program 
    { 
     public class Student 
     { 
     public string firstName; 
     public string lastName; 
     } 
     public class ScienceClass 
     { 
     public Student Student1, Student2, Student3; 
     } 
     static void Main(string[] args) 
     { 
     var student1 = new Student{firstName = "Bruce", 
            lastName = "Willis"}; 
     var student2 = new Student{firstName = "George", 
            lastName = "Clooney"}; 
     var student3 = new Student{firstName = "James", 
            lastName = "Cameron"}; 
     var sClass = new ScienceClass{Student1 = student1, 
             Student2 = student2, 
             Student3 = student3}; 
     } 
    } 
+7

To z pewnością byłaby pełna akcji klasa naukowa ... –

+0

Problem z tym podejściem polega na tym, że nie można go używać z polami "readonly" (lub właściwościami wspieranymi przez pola 'readonly'). – Dai

2

Oto bardzo dobra praca wokół:

  1. Bądź pustej klasie

    class MyClass{ 
    
    } 
    
  2. próby utworzenia wystąpienia obiektu i analizować je typy zmiennych, które chcesz w konstruktorze

    class Program{ 
        static void Main(string[] args){ 
    
         string var1 = "First variable is a string"; 
         int var2 = "Second variable is an int"; 
    
         Myclass foo = new MyClass(var1, var2); 
         //this line here is the important one 
        } 
    } 
    
  3. Program Visual Studio powinien podać monit o rozwiązanie, jeśli wskażesz myszą nową klasę MyClass, która pozwoli na automatyczne utworzenie konstruktora i właściwości w klasie przy użyciu nazw zmiennych podanych w kroku 2. Wynik jest następujący.

    class MyClass{ 
        private string var1; 
        private int var2; 
    
        public MyClass(string var1, int var2){ 
         // TODO: Complete member initialization 
         this.var1 = var1; 
         this.var2 = var2; 
        } 
    } 
    

    Uwaga: Można nawet pominąć krok 1 i użyć rozwiązać dwa razy, aby najpierw wygenerować klasę, a następnie wygenerować wnętrzności.

+0

Zmienna inicjalizacja var1 i var2 jest również ważna dla typu zmiennej (string i int) –

+0

Najlepszym sposobem użycia tego do inicjalizacji właściwości jest sama klasa po zadeklarowaniu właściwości, a następnie wyśmiewanie wywołania konstruktora za pomocą tych właściwości zostaną zainicjowane – MatanCo

3

mi odpowiedział na pytanie here:

to jest moja odpowiedź:

w visual studio 2015 Update3, mam tę funkcję.

Wystarczy podświetlić właściwości, a następnie nacisnąć ctrl + ., a następnie naciśnij przycisk Generuj konstruktora.

UPDATE Na przykład, jeśli już podkreślono 2 nieruchomości będzie Proponuję utworzyć wykonawcy z 2 parametrami, a jeśli już wybrany 3 będzie to sugerować z 3 parametrów i tak dalej.

również współpracuje z VS2017.

enter image description here

Powiązane problemy