c# - 如何序列化字典
问题描述
我目前正在构建一个应用程序,其中我有一些共享 Dictionary<Object, Guid> 的任务。
为了避免冲突,实际的字典包含在 DictionaryHandler 类中,具有三种方法:
class DictionaryHandler
{
private object lockProcesses = new object();
private Dictionary<Process, Guid> processes = new Dictionary<Process, Guid>();
public Dictionary<Process, Guid> GetProcesses()
{
lock (lockProcesses)
{
// TODO
}
}
public void AddToProcesses(Process process, Guid guid)
{
lock (lockProcesses)
{
processes.Add(process, guid);
}
}
public void RemoveFromProcesses(Process process)
{
lock (lockProcesses)
{
processes.Remove(process);
}
}
}
对于上下文,这是 Process 类:
public class Process
{
public string Name { get; }
public bool Enabled { get; }
public TimeSpan RuntimeWindowStart { get; }
public TimeSpan RuntimeWindowEnd { get; }
public TimeSpan Cooldown { get; }
public int Priority { get; }
public string Username { get; }
public string ExceptionDate { get; }
public string ExceptionDay { get; }
public string AllowedWorkdays { get; }
public string SpecificResource { get; }
public string Assigned { get; set; }
public DateTime? Timestamp { get; set; }
public Process(string name, bool enabled, TimeSpan runtimeWindowStart, TimeSpan runtimeWindowEnd, TimeSpan cooldown, int priority, string username, string exceptionDate, string exceptionDay, string allowedWorkdays, string specificResource, string assigned, DateTime? timestamp)
{
Name = name;
Enabled = enabled;
RuntimeWindowStart = runtimeWindowStart;
RuntimeWindowEnd = runtimeWindowEnd;
Cooldown = cooldown;
Priority = priority;
Username = username;
ExceptionDate = exceptionDate;
ExceptionDay = exceptionDay;
AllowedWorkdays = allowedWorkdays;
SpecificResource = specificResource;
Assigned = assigned;
Timestamp = timestamp;
}
}
我的主要问题是我想找到一种通过 GetProcesses() 方法返回字典副本的方法,而不返回对“实际”字典的引用。
据我所知,执行此操作的最佳方法是对字典进行序列化和反序列化并返回它。但是我很难做到这一点,因为我找不到与我的情况相匹配的例子。
解决方案
使用String
而不是Guid
.
Guid 是结构类型。因此,序列化和反序列化方法可能无法正常工作。
推荐阅读
- javascript - javascript图像动画在两个图像之间闪烁
- gulp - gulp 找不到模块'@babel/core'
- android - 测试接收SSL错误
- c# - 拉动刷新(SwipeRefreshLayout)android xamarin c#
- php - 仅检查 Woocommerce 中订单发布元数据中的特定信息
- c# - 在 Mac 中构建项目时无法在 Xamarin iOS 中链接程序集
- python - TensorFlow 回归错误:“无法将字符串转换为浮点数:”
- c++ - 在类中包装 ostream 并模板化 << 运算符
- c# - 将十进制转换为二进制组合(自定义长度)
- python - 提供与密码相同的登录名