ExpandedBlockStart.gif代码usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.IO;

namespaceYakaLib
{
publicclassConfig
{
privateDictionarystring,string_KeyValue=newDictionarystring,string();
privateDictionarystring,Liststring_KeyList=newDictionarystring,Liststring();
privateDictionarystring,Liststring_KeyRichList=newDictionarystring,Liststring();
privatestringconfigDir;
publicConfig(stringstrConfigfile)
{
configDir=strConfigfile;
StreamReadersr=newStreamReader(strConfigfile);
while(!sr.EndOfStream)
{
stringstrLine=sr.ReadLine();
strLine=strLine.Replace("","");
if(strLine.Contains('='))
{
intnIndex=strLine.IndexOf('=');
if(strLine.StartsWith("#"))
{
continue;
}

if(nIndex0strLine.LengthnIndex+1)
{
_KeyValue[strLine.Substring(0,nIndex)]=strLine.Substring(nIndex+1);
}
}
elseif((!strLine.StartsWith("#"))strLine.Contains('{'))
{
Liststringlist=newListstring();
intnIndex=strLine.IndexOf('{');
if(strLine.StartsWith("#"))
{
continue;
}
if(nIndex0strLine.LengthnIndex)
{
_KeyList[strLine.Substring(0,nIndex)]=list;
}

stringitem="";
while(!sr.EndOfStream)
{
item=sr.ReadLine();
item=item.Replace("","");
if(item.StartsWith("#")||item.Length==0)
{
continue;
}
if((!item.StartsWith("#"))item.Contains('}'))
{
intitemsEnd=item.IndexOf('}');
item=item.Substring(0,itemsEnd);
if(item.Length!=0)
{
list.Add(item);
}
break;
}
list.Add(item);
}
}
}
sr.Close();

FillRichDict();
}
publicConfig(ListstringstrConfigList)
{
foreach(stringstrinstrConfigList)
{
stringstrLine=str.Replace("","");
if(strLine.Contains('='))
{
intnIndex=strLine.IndexOf('=');
if(strLine.StartsWith("#"))
{
continue;
}

if(nIndex0strLine.LengthnIndex+1)
{
_KeyValue[strLine.Substring(0,nIndex)]=strLine.Substring(nIndex+1);
}
}
}

}
publicoverridestringToString()
{
stringstr="";
StreamReadersr=newStreamReader(configDir);
while(!sr.EndOfStream)
{
str+=sr.ReadLine();
str+="\r\n";
}
returnstr;
}

publicstringGet(stringkey)
{
if(_KeyValue.ContainsKey(key))
{
return_KeyValue[key];
}
else
{
return"";
}
}

publicintSet(stringkey,stringvalue)
{
interrorCode=-1;
if(_KeyValue.ContainsKey(key))
{
_KeyValue[key]=value;
RefreshKeyToFile(key);
errorCode=0;
}
else
{
errorCode=-1;
}

returnerrorCode;
}

publicvoidRefreshDictToFile()
{

}

publicvoidRefreshKeyToFile(stringkey)
{
if(_KeyValue.ContainsKey(key))
{
ListstringfileStream=newListstring();
//intKeyLineNumber=0;
StreamReadersr=newStreamReader(configDir);
while(!sr.EndOfStream)
{
stringstrLine=sr.ReadLine();
if(strLine.Contains(key))
{
string[]strSplitedArr=strLine.Split('=');
if(strSplitedArr.Length==2)
{
strSplitedArr[1]=""+_KeyValue[key];
strLine=strSplitedArr[0]+"="+strSplitedArr[1];
}
}
fileStream.Add(strLine);
}
sr.Close();

StreamWritersw=newStreamWriter(configDir);
foreach(stringiteminfileStream)
{
sw.WriteLine(item);
sw.Flush();
}
sw.Close();
}
}

publicListstringGetList(stringkey)
{
if(_KeyList.ContainsKey(key))
{
return_KeyList[key];
}
else
{
returnnewListstring();
}
}

privatevoidFillRichDict()
{
StreamReadersr=newStreamReader(configDir);
while(!sr.EndOfStream)
{
stringstrLine=sr.ReadLine();
strLine=strLine.Replace("","");
if(strLine.Contains('='))
{
intnIndex=strLine.IndexOf('=');
if(strLine.StartsWith("#"))
{
continue;
}

if(nIndex0strLine.LengthnIndex+1)
{
_KeyValue[strLine.Substring(0,nIndex)]=strLine.Substring(nIndex+1);
}
}
elseif((!strLine.StartsWith("#"))strLine.Contains('{'))
{
Liststringlist=newListstring();
intnIndex=strLine.IndexOf('{');
//if(strLine.StartsWith("#")strLine.Contains("{"))
//{
//continue;
//}
if(nIndex0strLine.LengthnIndex)
{
_KeyRichList[strLine.Substring(0,nIndex)]=list;
}

stringitem="";
while(!sr.EndOfStream)
{
item=sr.ReadLine();
//item=item.Replace("","");
//if(item.StartsWith("#")||item.Length==0)
//{
//continue;
//}
if((!item.StartsWith("#"))item.Contains('}'))
{
intitemsEnd=item.IndexOf('}');
item=item.Substring(0,itemsEnd);
if(item.Length!=0)
{
list.Add(item);
}
break;
}
list.Add(item);
}
}
}
sr.Close();
}

publicDictionarystring,ListstringGetKeyRichListDict()
{
return_KeyRichList;
}

publicDictionarystring,stringGetKeyValueDict()
{
return_KeyValue;
}

publicDictionarystring,ListstringGetKeyListDict()
{
return_KeyList;
}

publicboolCheckLexical(refstringerror)
{
StreamReadersr=newStreamReader(configDir);
UInt32linenumber=0;
intsymbol=0;
while(!sr.EndOfStream)
{
linenumber++;
stringstr=sr.ReadLine();
if(str.StartsWith("#"))
{
continue;
}
if(str.Contains('{'))
{
symbol++;
}
elseif(str.Contains("}"))
{
if(symbol==1)
{
symbol--;
}
elseif(symbol==0)
{
error="Losta{tomatch}inline"+linenumber;
returnfalse;
}
}
}
if(symbol==0)
{
returntrue;
}
else
{
error="miss{or}";
returnfalse;
}
}

publicboolCheckLexical()
{
StreamReadersr=newStreamReader(configDir);
UInt32linenumber=0;
intsymbol=0;
while(!sr.EndOfStream)
{
linenumber++;
stringstr=sr.ReadLine();
if(str.StartsWith("#"))
{
continue;
}
if(str.Contains('{'))
{
symbol++;
}
elseif(str.Contains("}"))
{
if(symbol==1)
{
symbol--;
}
elseif(symbol==0)
{
//error="Losta{tomatch}inline"+linenumber;
returnfalse;
}
}
}
if(symbol==0)
{
returntrue;
}
else
{
//error="miss{or}";
returnfalse;
}
}
}
}