using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Diagnostics;
|
using System.Linq;
|
using System.Runtime.Serialization;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
//using NPOI.SS.Formula.Functions;
|
//using 文件读写;
|
|
|
namespace Yw.WinFrmUI.Q3d
|
{
|
|
|
|
[Serializable]
|
public class dict<TKey, TValue> : Dictionary<TKey, TValue>
|
{
|
private List<TKey> keys
|
{
|
get
|
{
|
return this.Keys.ToList();
|
}
|
}
|
|
public bool emptyCreate = true;
|
//List<dict> _list = null;
|
public dict() : base()
|
{
|
}
|
|
public dict(int capacity) : base(capacity)
|
{
|
}
|
public dict(IEnumerable<KeyValuePair<TKey, TValue>> collection) : base((IDictionary<TKey, TValue>)collection)
|
{
|
}
|
public bool Value { get; set; }
|
|
public bool SetKey(TKey key, dynamic Value)
|
{
|
if (this.Contains(key))
|
{
|
this[key] = Value;
|
return false;
|
}
|
else
|
{
|
this.Add(key, Value);
|
return true;
|
}
|
}
|
public TKey[] GetKeys()
|
{
|
return this.Keys.ToArray();
|
}
|
public List<TempForEnum<TKey, TValue>> items()
|
{
|
var temp_list = new List<TempForEnum<TKey, TValue>>();
|
foreach (var Pair in this)
|
{
|
temp_list.Add(new TempForEnum<TKey, TValue>(Pair.Key, Pair.Value));
|
}
|
return temp_list;
|
}
|
public bool Contains(TKey[] keys)
|
{
|
foreach (var key in keys)
|
if (!this.Contains(key)) return false;
|
return true;
|
}
|
public bool Contains(TKey key)
|
{
|
return this.ContainsKey(key);
|
}
|
public bool Contains(KeyValuePair<TKey, dynamic> key)
|
{
|
return this.ContainsKey(key.Key);
|
}
|
public TValue Get(TKey key, TValue @default = default(TValue))
|
{
|
if (this.Contains(key))
|
return this[key];//obj.FirstOrDefault((k) => k.Key == key);
|
else
|
return @default;
|
}
|
public TValue Get(KeyValuePair<TKey, TValue> key, TValue @default = default(TValue))
|
{
|
if (this.Contains(key))
|
return this[key.Key];//obj.FirstOrDefault((k) => k.Key == key);
|
else
|
return @default;
|
}
|
public TValue pop(TKey key, TValue @default = default(TValue))
|
{
|
if (this.Contains(key))
|
{
|
var temp = this[key];
|
this.Remove(key);
|
return temp;//obj.FirstOrDefault((k) => k.Key == key);
|
}
|
else
|
return @default;
|
}
|
public TValue pop(KeyValuePair<TKey, TValue> key, TValue @default = default(TValue))
|
{
|
if (this.Contains(key))
|
{
|
var temp = this[key.Key];
|
this.Remove(key);
|
return temp;//obj.FirstOrDefault((k) => k.Key == key);
|
}
|
else
|
return @default;
|
}
|
public TValue this[KeyValuePair<TKey, TValue> key]
|
{
|
get { return this[key.Key]; }
|
set { this[key.Key] = value; }
|
}
|
public TValue this[TKey key]
|
{
|
get
|
{
|
if (!this.ContainsKey(key))
|
{
|
lock (this)
|
{
|
if (!this.ContainsKey(key))
|
{
|
if (emptyCreate)
|
this.Add(key, default(TValue));
|
else
|
return default(TValue);
|
}
|
}
|
}
|
return base[key];
|
|
}
|
set
|
{
|
if (!this.ContainsKey(key))
|
{
|
lock (this)
|
{
|
if (!this.ContainsKey(key))
|
{
|
if (emptyCreate)
|
this.Add(key, value);
|
else
|
return;
|
}
|
}
|
}
|
base[key] = value;
|
}
|
|
}
|
|
public TValue this[int index]
|
{
|
get
|
{
|
//如果是int类型的key,直接返回base[index],帮我补全以下return后的内容
|
TKey key = default(TKey);
|
if (typeof(TKey) == typeof(int))
|
key = (TKey)(object)index;
|
else
|
key = keys[index];
|
if (!base.ContainsKey(key))
|
base.Add(key, default(TValue));
|
|
return base[key];
|
}
|
set
|
{
|
TKey key = default(TKey);
|
if (typeof(TKey) == typeof(int))
|
{
|
key = (TKey)(object)index;
|
base[key] = value;
|
}
|
|
else
|
{
|
if (index < keys.Count)
|
{
|
key = keys[index];
|
base[key] = value;
|
}
|
}
|
|
|
}
|
}
|
|
public override string ToString()
|
{
|
return JsonConvert.SerializeObject(this);
|
}
|
public void LoadFromString(string s)
|
{
|
dict<TKey, TValue> d = JsonConvert.DeserializeObject<dict<TKey, TValue>>(s);
|
this.Clear();
|
foreach (var kp in d)
|
{
|
this.Add(kp.Key, kp.Value);
|
}
|
|
}
|
//public void ExportToExcel()
|
//{
|
// DataTable dt = new DataTable();
|
// dt.Columns.Add("Key");
|
// dt.Columns.Add("Value",typeof(double));
|
// foreach (var kp in this)
|
// {
|
// dt.Rows.Add(kp.Key, kp.Value);
|
// }
|
// ExcelExport.DtToExcel(dt);
|
//}
|
public bool Remove(KeyValuePair<TKey, TValue> key)
|
{
|
return this.Remove(key.Key);
|
}
|
|
|
public List<TValue> values()
|
{
|
return this.Values.ToList();
|
}
|
|
#region 将Session的元素简单放进dict中,简单处理方便使用
|
private DateTime 发送计时;
|
private string msgList = "";
|
private System.Timers.Timer t = new System.Timers.Timer();
|
|
|
public dict<TKey, TValue> ctx
|
{
|
get { return this; }
|
}
|
|
#endregion
|
|
#region IntentCommand
|
public double confidence;
|
public string methodName;
|
public dict<TKey, TValue> args;
|
public string current_arg;
|
//current_arg: str = ''
|
public dict(double confidence, string methodName, string current_arg = "", dict<TKey, TValue> args = null)
|
{
|
this.confidence = confidence;
|
this.methodName = methodName;
|
this.args = args;
|
this.current_arg = current_arg;
|
}
|
#endregion
|
|
}
|
public class TempForEnum<TKey, TValue>
|
{
|
public TKey Item1;
|
public TValue Item2;
|
public TempForEnum(TKey key, TValue value)
|
{
|
Item1 = key;
|
Item2 = value;
|
}
|
}
|
|
|
|
}
|