Saya sudah terbiasa dengan banyak IDE Java ( Eclipse , NetBeans , dan IntelliJ IDEA ) yang memberi Anda perintah untuk membuat konstruktor default untuk kelas berdasarkan bidang di kelas.
Sebagai contoh:
public class Example
{
public decimal MyNumber { get; set; }
public string Description { get; set; }
public int SomeInteger { get; set; }
// ↓↓↓ This is what I want generated ↓↓↓
public Example(decimal myNumber, string description, int someInteger)
{
MyNumber = myNumber;
Description = description;
SomeInteger = someInteger;
}
}
Memiliki konstruktor mengisi semua bidang objek adalah tugas yang umum di sebagian besar bahasa OOP, saya berasumsi bahwa ada beberapa cara bagi saya untuk menghemat waktu menulis kode boilerplate ini dalam C #. Saya baru di dunia C #, jadi saya ingin tahu apakah saya kehilangan sesuatu yang mendasar tentang bahasa ini? Apakah ada beberapa opsi di Visual Studio yang jelas?
Di Visual Studio 2015 Update3 saya memiliki fitur ini.
Hanya dengan menyorot properti dan kemudian tekan Ctrl+ .dan kemudian tekan Hasilkan Konstruktor .
Misalnya, jika Anda telah menyoroti dua properti, itu akan menyarankan Anda untuk membuat konstruktor dengan dua parameter dan jika Anda memilih tiga itu akan menyarankan satu dengan tiga parameter dan seterusnya.
Ini juga berfungsi dengan Visual Studio 2017.
sumber
public int Age { get; }
) Mereka harus memiliki setter yang ditentukan, bahkan jika sementara, untuk opsi yang tersedia. Diuji di Komunitas VS2015; tidak yakin apakah ini telah diperbaiki di VS2017.C # menambahkan fitur baru di Visual Studio 2010 yang disebut menghasilkan dari penggunaan. Tujuannya adalah untuk menghasilkan kode standar dari pola penggunaan. Salah satu fitur adalah menghasilkan konstruktor berdasarkan pola inisialisasi.
Fitur ini dapat diakses melalui tag cerdas yang akan muncul ketika pola terdeteksi.
Sebagai contoh, katakanlah saya memiliki kelas berikut
Dan saya menulis yang berikut ini di aplikasi saya
Konstruktor yang mengambil
int
tidak ada sehingga tag cerdas akan muncul dan salah satu opsi akan menjadi "Hasilkan rintisan konstruktor". Memilih yang akan mengubah kode untukMyType
menjadi yang berikut.sumber
Anda bisa menulis makro untuk melakukan ini - Anda akan menggunakan parser Visual Studio untuk mengambil informasi tentang anggota kelas.
Saya menulis makro serupa. (Saya akan membagikan kode di bawah ini). Makro yang saya tulis adalah untuk menyalin maju semua konstruktor di kelas dasar ketika Anda mewarisinya (berguna untuk kelas seperti Pengecualian yang memiliki banyak kelebihan pada ctor).
Inilah makro saya (sekali lagi, ini tidak menyelesaikan masalah Anda, tetapi Anda mungkin dapat memodifikasi untuk melakukan apa yang Anda inginkan)
sumber
Pada Visual Studio 2017, ini terlihat menjadi fitur bawaan. Tekan Ctrl+ .ketika kursor Anda berada di badan kelas, dan pilih "Hasilkan Konstruktor" dari dropdown Tindakan Cepat dan Refactorings .
sumber
Berikut ini adalah makro yang saya gunakan untuk tujuan itu. Ini akan menghasilkan konstruktor dari bidang dan properti yang memiliki setter pribadi.
sumber
Mungkin Anda bisa mencoba ini: http://cometaddin.codeplex.com/
sumber
Anda dapat melakukan ini dengan mudah dengan ReSharper 8 atau lebih baru. The
ctorf
,,ctorp
danctorfp
cuplikan menghasilkan konstruktor yang mengisi semua bidang, properti, atau bidang dan properti kelas.sumber
Inilah makro Visual Studio JMarsh yang dimodifikasi untuk menghasilkan konstruktor berdasarkan bidang dan properti di kelas.
sumber
Untuk Visual Studio 2015 saya menemukan ekstensi yang melakukan hal ini. Tampaknya berfungsi dengan baik dan memiliki jumlah unduhan yang cukup tinggi. Jadi jika Anda tidak dapat atau tidak ingin menggunakan ReSharper, Anda dapat menginstal yang ini sebagai gantinya.
Anda juga dapat memperolehnya melalui NuGet .
sumber
Saya menggunakan trik berikut:
Saya memilih deklarasi kelas dengan data-anggota dan tekan:
Ctrl+ C, Shift+ Ctrl+ C, Ctrl+ V.
PROGRAM mendapatkan deklarasi dari clipboard, menemukan nama kelas, menemukan semua anggota dan tipenya, menghasilkan konstruktor dan menyalinnya kembali ke clipboard.
Kami melakukannya dengan mahasiswa baru pada praktik "Programming-I" saya (Universitas Charles, Praha) dan sebagian besar siswa menyelesaikannya sampai akhir jam.
Jika Anda ingin melihat kode sumbernya, beri tahu saya.
sumber