nilai-kunci-db-csharp
Paket ringan untuk mengelola, memuat, memperbarui, dan menyimpan database tipe nilai kunci dengan cepat dan mudah
Contoh kasus penggunaan paket ini adalah memuat file konfigurasi, file bahasa, pengaturan preferensi dalam suatu aplikasi. Kasus penggunaan lainnya dapat dilihat di sini.
Paket tidak melakukan operasi Input dan Output apa pun karena ada beberapa cara untuk membaca dan menulis ke file dan metode tersebut memiliki kekuatan dan kelemahannya masing-masing sehingga pengembang harus menemukan cara yang efisien untuk memuat dan menyimpan secara lokal.
Nama paketnya adalah KeyValueDB.
Menggunakan Manajer Paket:
Install-Package KeyValueDB -Version 1.2.0
Menggunakan .NET CLI:
dotnet add package KeyValueDB --version 1.2.0
Menggunakan Referensi Pakage:
< PackageReference Include = " KeyValueDB " Version = " 1.2.0 " />
Menggunakan Paket CLI:
paket add KeyValueDB --version 1.2.0
Contoh berikut memuat, memperbarui, membaca, dan menghapus objek nilai kunci sederhana
using System ;
using Io . Github . Thecarisma ;
namespace Sample
{
class Test
{
public static void Main ( string [ ] args )
{
//initialize the key-value
KeyValueDB keyValueDB = new KeyValueDB ( "Greet=Hello World,Project=KeyValueDB" , true , '=' , ',' , false ) ;
//get an object
Console . WriteLine ( keyValueDB . Get ( "Greet" ) ) ;
//remove an object
keyValueDB . Remove ( "Greet" ) ;
//add an object
keyValueDB . Add ( "What" , "i don't know what to write here" ) ;
//print all the objects
foreach ( var kvo in keyValueDB ) {
Console . WriteLine ( kvo ) ;
}
}
}
}
kvp - Key Value Pair
kvdb - Key value Database
pss - Possibly
kvo - Key Value Object
Hanya tipe string yang digunakan sebagai kunci dan nilai kvo. Kvo dapat digunakan untuk mengganti atau mengatur nilai kunci.
Anda dapat menggunakan paket ini untuk memperbarui dan membuat database nilai kunci yang sudah ada. Pustaka ini tidak membaca database dari suatu file yang berarti Anda harus menemukan cara untuk membaca string dari file tersebut.
Buat keyValueDB baru. Pemisah default antara kunci dan nilai adalah =
dan pembatas antara kvp adalah n
(baris baru).
KeyValueDB keyValueDB = new KeyValueDB ( ) ;
Untuk memuat KeyValueDB yang ada
KeyValueDB keyValueDB = new KeyValueDB (
"Greet=Hello World,Project=KeyValueDB" , //pss read string from file
true , //case sensitive is true
'=' , //the seperator from key and value
',' , //the delimeter for the key-value-pair
false //error tolerance if true no exception is thrown
) ;
Satu-satunya tipe yang diterima yang dapat dimasukkan adalah KeyValueObject
dan String
yang valid. Metode Add
dapat digunakan untuk menambahkan kvp baru ke dalam objek.
Tambahkan kvp dengan kunci dan nilainya
keyValueDB . Add ( "Greet" , "Hello World" ) ;
Tambahkan kvp menggunakan kelas KeyValueObject
.
KeyValueObject keyValueObject = new KeyValueObject ( "Greet" , "Hello World" ) ;
keyValueDB . Add ( keyValueObject ) ;
Ada beberapa cara untuk mencari dan mendapatkan nilai dari objek kvdb. Nilai atau KeyValueObject dapat diperoleh dengan menggunakan metode di bawah ini
Anda bisa mendapatkan kvo menggunakan kunci atau indeks. Jika kvo yang sesuai tidak ditemukan, kvo kosong ditambahkan ke db dan kemudian dikembalikan tetapi tidak jika diminta dengan indeks bilangan bulat. Jika kvo cadangan dikirim sebagai parameter kedua, maka ketika permintaan kvo tidak ditemukan, parameter cadangan kedua ditambahkan ke kvdb dan kemudian dikembalikan.
Dapatkan kvo menggunakannya indeks integer
keyValueDB . GetKeyValueObject ( 0 ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Dapatkan kvo menggunakan kuncinya
keyValueDB . GetKeyValueObject ( "Greet" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Dapatkan kvo menggunakan kuncinya dengan fallback kvo
KeyValueObject keyValueObject = new KeyValueObject ( "Name" , "Adewale Azeez" ) ;
keyValueDB . GetKeyValueObject ( "Name" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Name,Value=Adewale Azeez
Dapatkan kvo dengan memeriksa kvdb untuk objek kvo yang berisi bagian kunci. Jika kvo cadangan dikirim sebagai parameter kedua, maka ketika permintaan kvo tidak ditemukan, parameter cadangan kedua ditambahkan ke kvdb dan kemudian dikembalikan.
Dapatkan kvo serupa menggunakan bagian kuncinya
keyValueDB . GetLikeKeyValueObject ( "eet" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Dapatkan kvo serupa menggunakan bagian kuncinya dengan kvo cadangan
KeyValueObject keyValueObject = new KeyValueObject ( "Name" , "Adewale Azeez" ) ;
keyValueDB . getKeyValueObject ( "Nam" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Name,Value=Adewale Azeez
Anda bisa mendapatkan nilai kvdb menggunakan kunci atau indeks. Jika nilai yang sesuai tidak ditemukan, string kosong ditambahkan ke db dan kemudian dikembalikan tetapi tidak jika diminta dengan indeks integer.
Jika kvo cadangan dikirim sebagai parameter kedua, maka ketika kunci permintaan tidak ditemukan, parameter kedua cadangan ditambahkan ke kvdb dan kemudian nilai dikembalikan. Jika nilai string dikirim sebagai nilai kedua, nilai tersebut dikembalikan jika kunci tidak ditemukan di kvdb.
Dapatkan nilai menggunakan indeks integer
keyValueDB . Get ( 0 ) ;
//"Hello World"
Dapatkan nilai menggunakan kunci itu
keyValueDB . Get ( "Greet" ) ;
//"Hello World"
Dapatkan kvo menggunakan kunci itu dengan nilai cadangan
keyValueDB . Get ( "Licence" , "The MIT Licence" ) ;
//"The MIT Licence"
Dapatkan kvo menggunakan kuncinya dengan fallback kvo
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . Get ( "Name" , keyValueObject ) ;
//"The MIT Licence"
Dapatkan nilai dengan memeriksa kvdb untuk objek kvo yang berisi bagian kunci.
Jika kvo cadangan dikirim sebagai parameter kedua, maka ketika kunci permintaan tidak ditemukan, parameter kedua cadangan ditambahkan ke kvdb dan kemudian nilai dikembalikan.
Dapatkan nilai menggunakan bagian kuncinya
keyValueDB . GetLike ( "eet" ) ;
//"Hello World"
Dapatkan nilai menggunakan bagian kuncinya dengan fallback kvo
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . GetLike ( "Li" , keyValueObject ) ;
//"The MIT Licence"
Ada berbagai cara untuk memperbarui kvp di kvdb, nilainya dapat diubah secara langsung atau disetel ke KeyValueObject baru. Jika Anda mencoba menyetel kvo yang tidak ada di kvdb menggunakan kunci it, kvo tersebut akan ditambahkan ke kvdb.
Metode Set
digunakan untuk mengubah nilai kvo menggunakan indeks kunci kvo atau kvo.
Tetapkan nilai kvo menggunakan indeksnya
keyValueDB . Set ( 0 , "Hello World from thecarisma" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World from thecarisma
Tetapkan nilai kvo menggunakan kunci itu
keyValueDB . Set ( "Greet" , "Hello World from thecarisma" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World from thecarisma
Ubah sepenuhnya KeyValueObject di kvdb menggunakan indeks atau kuncinya. Kvo telah diganti sepenuhnya yang berarti bidang unik seperti kode hash kvo berubah. Ketika kvo diatur menggunakan kunci itu jika kvo yang sesuai tidak ada maka ditambahkan ke kvdb. Perhatikan bahwa metode ini mengubah kvo sepenuhnya sehingga dapat digunakan untuk menggantikan kvo.
Tetapkan kvo menggunakannya index
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . SetKeyValueObject ( 0 , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Licence,Value=The MIT Licence
Tetapkan nilai kvo menggunakan kunci itu
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . SetKeyValueObject ( "Greet" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Licence,Value=The MIT Licence
Kvp baru dapat dimasukkan dengan menggunakan metode Add
. Kvp dapat ditambahkan menggunakan kunci dan nilainya atau dengan langsung menambahkan KeyValueObject ke kvdb.
Tambahkan kvp baru menggunakan kunci dan nilai
keyValueDB . Add ( "Key" , "This is the value" ) ;
Tambahkan kvp baru menggunakan KeyValueObject baru
KeyValueObject keyValueObject = new KeyValueObject ( "Key" , "This is the value" ) ;
keyValueDB . Add ( keyValueObject ) ;
Hapus kvp sepenuhnya dari kvdb menggunakan kunci indeks bilangan bulat. Kvp yang telah dihapus dikembalikan dari metode. Jika indeks tidak ada, terjadi kesalahan di luar batas dan jika kvo dengan kunci tidak ada, tidak ada yang dilakukan kecuali kvo kosong dikembalikan.
Hapus kvp menggunakan indeks integer
keyValueDB . Remove ( 0 ) ;
//removes the first kvp in the kvdb
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Hapus kvp menggunakan kunci itu
keyValueDB . Remove ( "Greet" ) ;
//removes the first kvp in the kvdb
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Dapatkan ukuran kvo di kvdb.
keyValueDB . Size ( ) ;
//4
Hapus semua elemen dan kvo dari kvdb
keyValueDB . Clear ( ) ;
//keyValueDB.Size() = 0
Periksa apakah kvdb berisi kvo di dalamnya.
keyValueDB . IsEmpty ( ) ;
//False
Koleksi kvp kvdb dapat diperiksa sebagai string menggunakan metode ToString
. Nilai yang dikembalikan dapat disimpan secara lokal dengan menulis ke penyimpanan persisten atau ke file teks biasa. Output dari metode ToString
ditentukan oleh kvos, pemisah dan pembatas.
keyValueDB . ToString ( ) ;
// "Greet=Hello World,Project=KeyValueDB,Project=KeyValueDB,Licence=The MIT Licence"
Objek KeyValueDB dapat diiterasi secara asli menggunakan ekspresi loop foreach..in
.
foreach ( var kvo in keyValueDB ) {
//operate on the KeyValueObject
}
Kelas KeyValueObject berisi bidang kunci dan nilai serta bidang penyetel dan pengambil. KeyValueObject adalah tipe internal utama yang digunakan di kelas KeyValueDB.
Di KeyValueDB, pasangan nilai kunci disimpan dalam tipe List
, semua pencarian, pembaruan, dan penghapusan dilakukan pada keyValueObjects
di kelas. String dikirim sebagai parameter pertama jika diurai menjadi nilai kunci yang valid menggunakan kolom pemisah dan pembatas. Metode ToString
juga mengurai konten keyValueObjects
menjadi string yang valid sehubungan dengan pemisah dan pembatas.
Sebelum Anda memulai kontribusi, silakan baca panduan kontribusi di PANDUAN KONTRIBUSI
Anda dapat membuka masalah atau mengajukan permintaan yang hanya mengatasi masalah dalam implementasi ini di repo ini, jika masalah tersebut mengatasi konsep paket maka buat masalah atau rfc di sini
Anda dapat mendukung beberapa komunitas ini karena mereka memberikan dampak besar dalam pengembangan orang-orang untuk memulai rekayasa perangkat lunak.
Lisensi MIT Hak Cipta (c) 2020 Adewale Azeez - keyvaluedb