-
-
Notifications
You must be signed in to change notification settings - Fork 43
/
SharedEntity.cs
42 lines (36 loc) · 1.15 KB
/
SharedEntity.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using Data.Abstractions;
using System.Collections.Concurrent;
namespace Data.Models
{
public class SharedEntity : IPropertyExtender
{
private ConcurrentDictionary<string, object> _additionalProperties;
/// <summary>
/// indicates if the entity is active
/// </summary>
public bool Active { get; set; } = true;
public SharedEntity()
{
_additionalProperties = new ConcurrentDictionary<string, object>();
}
public T GetAdditionalProperty<T>(string name)
{
return _additionalProperties.ContainsKey(name) ? (T)_additionalProperties[name] : default;
}
public void SetAdditionalProperty(string name, object value)
{
if (_additionalProperties.ContainsKey(name))
{
_additionalProperties[name] = value;
}
else
{
_additionalProperties.TryAdd(name, value);
}
}
public void CopyAdditionalProperties(SharedEntity source)
{
_additionalProperties = source._additionalProperties;
}
}
}