需要帮助使用C#

时间:2017-09-05 19:24:14

标签: c# xml serialization redis

我正在试图弄清楚如何将多个对象序列化为一个巨大的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;

1 个答案:

答案 0 :(得分:0)

所以看起来我的原始虽然创建了我的生成器列表是正确的。如果您创建一个列表然后序列化列表对象,它将包含其中的所有公共对象。我最初没有工作,因为我的发电机内的物体是私人的。 感谢@jdweng指出这一点!