|
|
@ -16,54 +16,35 @@ namespace Apewer |
|
|
|
{ |
|
|
|
|
|
|
|
/// <summary></summary>
|
|
|
|
public ObjectSet(bool autoTrim) |
|
|
|
{ |
|
|
|
AutoTrim = autoTrim; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary></summary>
|
|
|
|
public ObjectSet() { } |
|
|
|
public ObjectSet(bool trimKey = false) : base(trimKey) { } |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>字典模型。</summary>
|
|
|
|
[Serializable] |
|
|
|
public partial class ObjectSet<T> // where T : class
|
|
|
|
public partial class ObjectSet<T> : IToJson |
|
|
|
{ |
|
|
|
|
|
|
|
private Dictionary<string, T> _origin; |
|
|
|
|
|
|
|
private bool _autotrim = false; |
|
|
|
private bool _trimkey = false; |
|
|
|
|
|
|
|
private bool _locked = false; |
|
|
|
|
|
|
|
/// <summary>获取或设置字典内容。</summary>
|
|
|
|
public T this[string key] |
|
|
|
{ |
|
|
|
get { return Get(key); } |
|
|
|
set { Set(key, value); } |
|
|
|
} |
|
|
|
public T this[string key] { get { return Get(key); } set { Set(key, value); } } |
|
|
|
|
|
|
|
/// <summary>获取字典。</summary>
|
|
|
|
internal Dictionary<string, T> Origin |
|
|
|
{ |
|
|
|
get { return _origin; } |
|
|
|
} |
|
|
|
internal Dictionary<string, T> Origin { get { return _origin; } } |
|
|
|
|
|
|
|
internal bool Locked { get { return _locked; } set { _locked = value; } } |
|
|
|
|
|
|
|
internal bool AutoTrim { get { return _autotrim; } set { _autotrim = value; } } |
|
|
|
internal bool TrimKey { get { return _trimkey; } set { _trimkey = value; } } |
|
|
|
|
|
|
|
/// <summary>构造函数。</summary>
|
|
|
|
public ObjectSet() |
|
|
|
public ObjectSet(bool trimKey = false) |
|
|
|
{ |
|
|
|
_origin = new Dictionary<string, T>(); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>构造函数。</summary>
|
|
|
|
public ObjectSet(bool autoTrim) |
|
|
|
{ |
|
|
|
_autotrim = autoTrim; |
|
|
|
_trimkey = trimKey; |
|
|
|
_origin = new Dictionary<string, T>(); |
|
|
|
} |
|
|
|
|
|
|
@ -78,7 +59,7 @@ namespace Apewer |
|
|
|
var value = default(T); |
|
|
|
if (key != null) |
|
|
|
{ |
|
|
|
var k = _autotrim ? Trim(key) : key; |
|
|
|
var k = _trimkey ? Trim(key) : key; |
|
|
|
lock (_origin) |
|
|
|
{ |
|
|
|
contains = _origin.ContainsKey(k); |
|
|
@ -94,23 +75,28 @@ namespace Apewer |
|
|
|
var success = false; |
|
|
|
if (key != null) |
|
|
|
{ |
|
|
|
var k = _autotrim ? Trim(key) : key; |
|
|
|
var k = _trimkey ? Trim(key) : key; |
|
|
|
lock (_origin) |
|
|
|
{ |
|
|
|
if (_origin.ContainsKey(k)) |
|
|
|
{ |
|
|
|
_origin[k] = value; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
_origin.Add(k, value); |
|
|
|
} |
|
|
|
if (_origin.ContainsKey(k)) _origin[k] = value; |
|
|
|
else _origin.Add(k, value); |
|
|
|
success = true; |
|
|
|
} |
|
|
|
} |
|
|
|
return success; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>转换为 <see cref="Json"/> 对象。</summary>
|
|
|
|
public Json ToJson() => Json.From(_origin); |
|
|
|
|
|
|
|
/// <summary>转换为 <see cref="Json"/> 字符串。</summary>
|
|
|
|
public override string ToString() |
|
|
|
{ |
|
|
|
var json = ToJson(); |
|
|
|
if (json == null) return null; |
|
|
|
return json.ToString(true); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
#if !NET20
|
|
|
|