键值数据库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