Pelatihan
Modul
Memanggil metode dari Pustaka Kelas .NET menggunakan C# - Training
Gunakan fungsionalitas di Pustaka Kelas .NET dengan memanggil metode yang mengembalikan nilai, menerima parameter input, dan banyak lagi.
Browser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Dalam tutorial ini Anda akan mempelajari apa arti pembuatan versi di .NET. Anda juga akan mempelajari faktor-faktor yang perlu dipertimbangkan saat membuat versi perpustakaan Anda serta memutakhirkan ke versi perpustakaan yang baru.
Pengkompilasi C# adalah bagian dari .NET SDK. Secara default, pengkompilasi memilih versi bahasa C# yang cocok dengan TFM yang dipilih untuk proyek Anda. Jika versi SDK lebih besar dari kerangka kerja yang Anda pilih, pengkompilasi dapat menggunakan versi bahasa yang lebih besar. Anda dapat mengubah default dengan mengatur LangVersion
elemen dalam proyek Anda. Anda dapat mempelajari caranya di artikel kami tentang opsi kompilator.
Peringatan
Mengatur elemen ke LangVersion
latest
tidak disarankan. Pengaturan berarti latest
pengkompilasi yang diinstal menggunakan versi terbarunya. Itu dapat berubah dari mesin ke mesin, membuat build tidak dapat diandalkan. Selain itu, ini memungkinkan fitur bahasa yang mungkin memerlukan fitur runtime atau pustaka yang tidak disertakan dalam SDK saat ini.
Sebagai pengembang yang telah membuat pustaka .NET untuk penggunaan umum, kemungkinan besar Anda pernah berada dalam situasi di mana Anda harus meluncurkan pembaruan baru. Bagaimana cara Anda membahas proses ini sangat penting karena Anda perlu memastikan bahwa ada transisi kode yang ada yang mulus ke versi baru pustaka Anda. Berikut ini adalah beberapa hal yang perlu dipertimbangkan saat membuat rilis baru:
Penerapan versi semantik (singkatnya SemVer) adalah konvensi penamaan yang diterapkan pada versi pustaka Anda untuk menandakan peristiwa milestone tertentu. Idealnya, informasi untuk versi yang Anda berikan kepada pustaka Anda akan membantu pengembang menentukan kompatibilitas dengan proyek mereka yang menggunakan versi lama dari pustaka yang sama.
Pendekatan yang paling mendasar untuk SemVer adalah format 3 komponen MAJOR.MINOR.PATCH
, di mana:
MAJOR
dinaikkan saat Anda membuat perubahan API yang tidak kompatibelMINOR
bertambah saat Anda menambahkan fungsionalitas dengan cara yang kompatibel mundurPATCH
dinaikkan ketika Anda melakukan perbaikan bug yang kompatibel dengan mundurAda juga cara untuk menentukan skenario lain, misalnya, versi pra-rilis, saat menerapkan informasi versi ke pustaka .NET Anda.
Saat Anda merilis versi baru perpustakaan Anda, kompatibilitas mundur dengan versi sebelumnya kemungkinan besar akan menjadi salah satu perhatian utama Anda. Versi baru pustaka Anda adalah sumber yang kompatibel dengan versi sebelumnya jika kode yang bergantung pada versi sebelumnya dapat, saat dikompilasi ulang, bekerja dengan versi baru. Versi baru pustaka Anda kompatibel dengan biner jika aplikasi yang bergantung pada versi lama dapat, tanpa kompilasi ulang, bekerja dengan versi baru.
Berikut adalah beberapa hal yang perlu dipertimbangkan saat mencoba mempertahankan kompatibilitas mundur dengan versi perpustakaan Anda yang lebih lama:
Catatan
Membuat argumen kompulsori opsional harus memiliki efek yang sangat sedikit terutama jika tidak mengubah perilaku metode.
Semakin mudah Anda membuatnya bagi pengguna untuk meningkatkan ke versi baru perpustakaan Anda, semakin besar kemungkinan mereka akan meningkatkan lebih cepat.
Sebagai pengembang .NET, kemungkinan besar Anda menemukan file app.config
yang ada di sebagian besar jenis proyek.
File konfigurasi sederhana ini dapat membantu meningkatkan peluncuran pembaruan baru. Secara umum Anda harus mendesain perpustakaan Anda sedemikian rupa sehingga informasi yang cenderung berubah secara teratur disimpan dalam file app.config
, dengan cara ini ketika informasi tersebut diperbarui, file konfigurasi versi lama hanya perlu diganti dengan yang baru tanpa perlu untuk mengkompilasi ulang perpustakaan.
Sebagai pengembang yang menggunakan pustaka .NET yang dibuat oleh pengembang lain, kemungkinan besar Anda menyadari bahwa versi baru pustaka mungkin tidak sepenuhnya kompatibel dengan proyek Anda dan Anda mungkin sering harus memperbarui kode agar dapat bekerja dengan perubahan tersebut.
Beruntung bagi Anda, C# dan ekosistem .NET hadir dengan fitur dan teknik yang memungkinkan kami memperbarui aplikasi dengan mudah agar berfungsi dengan versi pustaka baru yang mungkin memperkenalkan perubahan yang melanggar.
Anda bisa menggunakan file app.config untuk memperbarui versi pustaka yang digunakan aplikasi Anda. Dengan menambah apa yang disebut pengalihan pengikatan, Anda dapat menggunakan versi pustaka baru tanpa harus mengkompilasi ulang aplikasi Anda. Contoh berikut menunjukkan bagaimana Anda akan memperbarui file app.config aplikasi Anda untuk menggunakan patch 1.0.1
dari versi ReferencedLibrary
alih-alih versi 1.0.0
yang awalnya digunakan untuk mengompilasi.
<dependentAssembly>
<assemblyIdentity name="ReferencedLibrary" publicKeyToken="32ab4ba45e0a69a1" culture="en-us" />
<bindingRedirect oldVersion="1.0.0" newVersion="1.0.1" />
</dependentAssembly>
Catatan
Pendekatan ini hanya akan berfungsi jika versi dari ReferencedLibrary
baru kompatibel dengan aplikasi Anda.
Lihatlah bagian Kompatibilitas Mundur di atas untuk mengetahui perubahan saat menentukan kompatibilitas.
Anda menggunakan pengubah new
untuk menyembunyikan anggota dari kelas dasar yang diwariskan. Ini adalah salah satu cara kelas turunan dapat merespons pembaruan di kelas-kelas dasar.
Ambil contoh berikut:
public class BaseClass
{
public void MyMethod()
{
Console.WriteLine("A base method");
}
}
public class DerivedClass : BaseClass
{
public new void MyMethod()
{
Console.WriteLine("A derived method");
}
}
public static void Main()
{
BaseClass b = new BaseClass();
DerivedClass d = new DerivedClass();
b.MyMethod();
d.MyMethod();
}
Hasil
A base method
A derived method
Dari contoh di atas Anda dapat melihat bagaimana DerivedClass
menyembunyikan metode MyMethod
yang ada di BaseClass
.
Ini berarti bahwa ketika kelas dasar di versi baru perpustakaan menambahkan anggota yang sudah ada di kelas turunan Anda, Anda cukup menggunakan pengubah new
pada anggota kelas turunan untuk menyembunyikan anggota kelas dasar.
Ketika tidak ada pengubah new
yang ditentukan, kelas turunan secara default akan menyembunyikan anggota yang bertentangan di kelas dasar, meskipun peringatan kompilator akan dihasilkan kode akan tetap dikompilasi. Ini berarti bahwa hanya dengan menambahkan anggota baru ke kelas yang ada membuat versi baru perpustakaan Anda kompatibel dengan sumber dan biner dengan kode yang bergantung padanya.
Pengubah override
mengartikani implementasi turunan memperluas implementasi anggota kelas dasar daripada menyembunyikannya. Anggota kelas dasar harus menerapkan pengubah virtual
ke dalam.
public class MyBaseClass
{
public virtual string MethodOne()
{
return "Method One";
}
}
public class MyDerivedClass : MyBaseClass
{
public override string MethodOne()
{
return "Derived Method One";
}
}
public static void Main()
{
MyBaseClass b = new MyBaseClass();
MyDerivedClass d = new MyDerivedClass();
Console.WriteLine("Base Method One: {0}", b.MethodOne());
Console.WriteLine("Derived Method One: {0}", d.MethodOne());
}
Hasil
Base Method One: Method One
Derived Method One: Derived Method One
Pengubah override
dievaluasi pada waktu kompilasi dan pengompilasi akan melemparkan kesalahan jika tidak menemukan anggota virtual untuk diambil alih.
Pengetahuan Anda tentang teknik yang dibahas dan pemahaman Anda tentang situasi di mana menggunakannya, akan sangat membantu dalam memudahkan transisi antar versi perpustakaan.
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Pelatihan
Modul
Memanggil metode dari Pustaka Kelas .NET menggunakan C# - Training
Gunakan fungsionalitas di Pustaka Kelas .NET dengan memanggil metode yang mengembalikan nilai, menerima parameter input, dan banyak lagi.