我正在尝试弄清楚如何将多个对象序列化为一个巨大的 XML 文件,以将其批量写入 redis 缓存服务器。我知道如何序列化来自每个单独对象的数据,但我需要将所有对象的所有数据批处理到一个文件中并将其写入 redis。
问题: 如何使用多个数据变量批量序列化多个对象
生成每个对象的代码:
private void Initialize()
{
// runs through a list of 600ish skills and creates a call data generator for each skill
foreach (var skill in _skills)
{
IFeedServiceAgent feedService = new FeedServiceAgent();
feedService.Subscribe(skill.SkillNumber.ToString(), skill.CallServer);
CallDataGenerator calldata = new CallDataGenerator(_callDataRepo, feedService);
_callDataGenerators.Add(calldata);
Console.WriteLine("Instance of " + skill.SkillNumber + " From Call Server " + skill.CallServer + " is preparing to start");
}
}
每个生成器都生成相同类型的信息,但在我们的调用系统上用于不同的技能。大约有 600 种技能,所以有 600 个生成器。
生成的数据示例:
_skillData.OldestCall = e.CmsData.Skill.OldestCall;
_skillData.AgentsStaffed = e.CmsData.Skill.AgentsStaffed;
_skillData.AgentsAuxed = e.CmsData.Skill.AgentsInAux;
_skillData.AgentsAvailable = e.CmsData.Skill.AgentsAvailable;
_skillData.AgentsOnCalls = e.CmsData.Skill.AgentsOnAcdCall;
_skillData.CallsWaitingInQueue = e.CmsData.Skill.InQueueInRing;
_skillData.Asa = e.CmsData.Skill.AnswerTimePerAcdCall;
_skillData.TimeSubmitted = DateTime.Now;
_skillData.EstimatedHoldTimeLow = e.CmsData.Skill.ExpectedWaitTimeLow;
_skillData.EstimatedHoldTimeMedium = e.CmsData.Skill.ExpectedWaitTimeMedium;
_skillData.EstimatedHoldTimeHigh = e.CmsData.Skill.ExpectedWaitTimeHigh;
_agentData.AgentName = item.AgName;
_agentData.AgentExtension = item.Extension;
_agentData.AgentAuxReason = item.AuxReasonDescription;
_agentData.AgentId = item.LoginId;
_agentData.AgentAcdState = item.WorkModeDirectionDescription;
_agentData.AgentTimeInState = DateTime.Now - item.DateTimeUpdated;
_agentData.TimeSubmitted = DateTime.Now;
最佳答案
所以看起来我最初创建的生成器列表是正确的。如果您创建一个列表,然后序列化该列表对象,它将包含其中的所有公共(public)对象。我的最初没有工作,因为我的生成器内部的对象是私有(private)的。 感谢@jdweng 指出这一点!
关于c# - 需要帮助序列化多个对象以使用 C# 缓存到 redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46062010/