鍵值資料庫csharp
輕量級包,可快速輕鬆地管理、載入、更新和儲存鍵值類型資料庫
該套件的範例用例是在應用程式中載入設定檔、語言檔案、首選項設定。更多用例可以在這裡查看。
該套件不執行任何輸入和輸出操作,因為有多種方法可以讀取和寫入文件,並且這些方法各有優缺點,因此開發人員必須找到在本地加載和保存的有效方法。
包名稱是KeyValueDB。
使用套件管理器:
Install-Package KeyValueDB -Version 1.2.0
使用.NET CLI:
dotnet add package KeyValueDB --version 1.2.0
使用包參考:
< PackageReference Include = " KeyValueDB " Version = " 1.2.0 " />
使用資料包 CLI:
paket add KeyValueDB --version 1.2.0
下面的範例載入、更新、讀取和刪除一個簡單的鍵值對象
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
僅使用字串類型作為kvo的key和value。 kvo 可用於替換或設定鍵的值。
您可以使用該套件來更新和建立現有的鍵值資料庫。該庫不會從文件中讀取資料庫,這意味著您必須找到一種從文件中讀取字串的方法。
建立一個新的 keyValueDB。鍵和值之間的預設分隔符號是=
,kvp 之間的分隔符號是n
(換行符號)。
KeyValueDB keyValueDB = new KeyValueDB ( ) ;
載入現有的 KeyValueDB
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
) ;
唯一接受的可以插入的類型是有效的KeyValueObject
和String
。 Add
方法可用於將新的 kvp 新增至物件中。
新增一個帶有鍵和值的 kvp
keyValueDB . Add ( "Greet" , "Hello World" ) ;
使用KeyValueObject
類別來新增 kvp。
KeyValueObject keyValueObject = new KeyValueObject ( "Greet" , "Hello World" ) ;
keyValueDB . Add ( keyValueObject ) ;
有多種方法可以從 kvdb 物件中尋找並取得值。可以使用以下方法取得值或 KeyValueObject
您可以使用鍵或索引來取得 kvo。如果沒有找到對應的kvo,則會將一個空的kvo加入db然後傳回,但在使用整數索引請求時則不會傳回。如果回退 kvo 作為第二個參數發送,則當未找到請求 kvo 時,回退第二個參數將新增至 kvdb,然後返回。
使用整數索引取得 kvo
keyValueDB . GetKeyValueObject ( 0 ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
使用 it key 取得 kvo
keyValueDB . GetKeyValueObject ( "Greet" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
使用 it key 和後備 kvo 取得 kvo
KeyValueObject keyValueObject = new KeyValueObject ( "Name" , "Adewale Azeez" ) ;
keyValueDB . GetKeyValueObject ( "Name" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Name,Value=Adewale Azeez
透過檢查包含部分金鑰的 kvo 物件的 kvdb 來取得 kvo。如果回退 kvo 作為第二個參數發送,則當未找到請求 kvo 時,回退第二個參數將新增至 kvdb,然後返回。
使用關鍵部分獲得類似的 kvo
keyValueDB . GetLikeKeyValueObject ( "eet" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
使用關鍵部分和後備 kvo 獲得類似的 kvo
KeyValueObject keyValueObject = new KeyValueObject ( "Name" , "Adewale Azeez" ) ;
keyValueDB . getKeyValueObject ( "Nam" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Name,Value=Adewale Azeez
您可以使用鍵或索引來取得 kvdb 值。如果沒有找到相應的值,則會將一個空字串新增到資料庫中,然後返回,但在使用整數索引請求時則不會返回。
如果回退 kvo 作為第二個參數傳送,則當未找到請求金鑰時,回退第二個參數將會新增至 kvdb,然後傳回值。如果將字串值作為第二個值傳送,並且在 kvdb 中找不到該金鑰,則傳回該字串值。
使用整數索引取得值
keyValueDB . Get ( 0 ) ;
//"Hello World"
使用 it 鍵取得值
keyValueDB . Get ( "Greet" ) ;
//"Hello World"
使用 it 鍵和後備值取得 kvo
keyValueDB . Get ( "Licence" , "The MIT Licence" ) ;
//"The MIT Licence"
使用 it key 和後備 kvo 取得 kvo
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . Get ( "Name" , keyValueObject ) ;
//"The MIT Licence"
透過檢查包含部分金鑰的 kvo 物件的 kvdb 來取得值。
如果回退 kvo 作為第二個參數傳送,則當未找到請求金鑰時,回退第二個參數將會新增至 kvdb,然後傳回值。
使用關鍵部分獲取值
keyValueDB . GetLike ( "eet" ) ;
//"Hello World"
使用關鍵部分和後備 kvo 取得值
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . GetLike ( "Li" , keyValueObject ) ;
//"The MIT Licence"
有多種方法可以更新 kvdb 中的 kvp,可以直接變更值或設定為新的 KeyValueObject。如果您嘗試使用 it 鍵設定 kvdb 中不存在的 kvo,則會將其新增至 kvdb 中。
Set
方法用於使用 kvo 的索引或 kvo 鍵來變更 kvo 的值。
使用它的索引來設定 kvo 值
keyValueDB . Set ( 0 , "Hello World from thecarisma" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World from thecarisma
使用 it 鍵設定 kvo 值
keyValueDB . Set ( "Greet" , "Hello World from thecarisma" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World from thecarisma
使用索引或鍵完全變更 kvdb 中的 KeyValueObject。 kvo 被完全替換,這意味著像 kvo 的雜湊碼這樣的獨特欄位會發生變化。當使用 key 設定 kvo 時,如果對應的 kvo 不存在,則會將其新增至 kvdb 中。請注意,此方法完全更改了 kvo,因此可以使用它來替換 kvo。
使用它的索引來設定一個kvo
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . SetKeyValueObject ( 0 , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Licence,Value=The MIT Licence
使用 it 鍵設定 kvo 值
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . SetKeyValueObject ( "Greet" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Licence,Value=The MIT Licence
可以透過呼叫Add
方法插入新的 kvp。可以使用它的鍵和值或直接將 KeyValueObject 加到 kvdb 來新增 kvp。
使用鍵和值添加新的 kvp
keyValueDB . Add ( "Key" , "This is the value" ) ;
使用新的 KeyValueObject 新增新的 kvp
KeyValueObject keyValueObject = new KeyValueObject ( "Key" , "This is the value" ) ;
keyValueDB . Add ( keyValueObject ) ;
使用整數索引的任一鍵從 kvdb 中完全刪除 kvp。被移除的 kvp 將從該方法返回。如果索引不存在,則會發生越界錯誤,並且如果不存在具有該鍵的 kvo,則不執行任何操作,但會傳回空 kvo。
使用整數索引刪除 kvp
keyValueDB . Remove ( 0 ) ;
//removes the first kvp in the kvdb
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
使用 it 鍵刪除 kvp
keyValueDB . Remove ( "Greet" ) ;
//removes the first kvp in the kvdb
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
取得 kvdb 中 kvo 的大小。
keyValueDB . Size ( ) ;
//4
從 kvdb 中刪除所有元素和 kvo
keyValueDB . Clear ( ) ;
//keyValueDB.Size() = 0
檢查kvdb中是否包含kvo。
keyValueDB . IsEmpty ( ) ;
//False
可以使用ToString
方法將 kvp 集合 kvdb 作為字串進行檢查。傳回的值可以透過寫入持久性儲存或純文字檔案來保存在本機。 ToString
方法的輸出由 kvos、分隔符號和定界符決定。
keyValueDB . ToString ( ) ;
// "Greet=Hello World,Project=KeyValueDB,Project=KeyValueDB,Licence=The MIT Licence"
可以使用foreach..in
循環表達式本機迭代 KeyValueDB 物件。
foreach ( var kvo in keyValueDB ) {
//operate on the KeyValueObject
}
KeyValueObject 類別包含鍵和值欄位以及欄位 setter 和 getter。 KeyValueObject 是 KeyValueDB 類別中使用的主要內部類型。
在KeyValueDB中,鍵值對儲存在List
類型中,所有搜尋、更新和刪除都是在類別中的keyValueObjects
上完成的。如果使用分隔符號和分隔符號欄位解析為有效的鍵值,則作為第一個參數傳送的字串。 ToString
方法也將keyValueObjects
內容解析為有關分隔符號和定界符的有效字串。
在開始貢獻之前,請先閱讀貢獻指南中的貢獻指南
您可以開啟問題或提交僅解決此儲存庫中此實作中的問題的請求,如果問題解決了套件的概念,則在此處建立問題或 rfc
您可以支持該社區中的一些人,因為他們對人們開始軟體工程的發展產生了巨大影響。
麻省理工學院許可證 版權所有 (c) 2020 Adewale Azeez - keyvaluedb