private MapMessage WorkMapMessage(MapMessage message)
        {
            MapMessage mm = new MapMessage();

            try
            {
                byte[] dll = (byte[])message.MapDLL;
                Assembly assembly = Assembly.Load(dll);
                var type = typeof(IMapping);
                var types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x)).ToArray();
                IMapping instanceOfMyType = (IMapping)Activator.CreateInstance(types[0]);
                MappedAnswer[] answer = instanceOfMyType.Map(message.Data);

                mm.Data = answer;
                mm.Piece = message.Piece;
                mm.TaskNumber = message.TaskNumber;
                mm.Port = message.Port;
                mm.ReturnIP = message.ReturnIP;
            }
            finally
            {
                this.Message = null;
            }
            return mm;
        }
 public bool SendMap(Routing Route)
 {
     bool sentMessage = false;
     if (OriginalTasks.Count() > 0)
     {
         TaskInfoOriginal taskToWork = OriginalTasks.GetPieceToWork();
         TaskIdentifier individualTask = taskToWork.GetPieceToWork(Route.IP);
         if (individualTask != null)
         {
             individualTask.SentItem();
             MapMessage mapMessage = new MapMessage();
             mapMessage.MapDLL = taskToWork.WorkDLL;
             mapMessage.Piece = taskToWork.position;
             mapMessage.Port = ManagerActor.LocalPort;
             mapMessage.TaskNumber = taskToWork.ID;
             mapMessage.Data = individualTask.DataObject;
             new NetworkResponseActor(mapMessage, Route.Port, Route.IP).Start();
             Console.WriteLine("Sent a Map job out.");
             sentMessage = true;
         }
     }
     return sentMessage;
 }