Как сохранить значение после удаления родительского объекта - PullRequest
0 голосов
/ 01 июля 2019

Мне нужно хранить значение независимо от родительского объекта, поэтому, если я захочу удалить его, мое значение останется в программе.

Я не использую базу данных, мой MVC связан сфреймворк библиотеки с репозиториями

Модель

    namespace FarmMVC.Models
    {
      public abstract class AnimalViewModel
      {
        protected AnimalViewModel()
        {

        }
        protected AnimalViewModel(AnimalBase a)
        {
          Name = a.Name;
          Age = a.Age;
          Weight = a.Weight;
          Breed = a.Breed;
          Gender = a.Gender;
          ParticularSigns = a.ParticularSigns;
          Color = a.Color;
          Meat = a.Meat;         
        }

          public int Meat { get; set; }
          public int MeatProduction { get; set; }
      }
    }

Контроллер

    namespace FarmMVC.Controllers
    {
      public class AnimalsController : Controller
      {
        public ActionResult GoatMilk(string name)
        {
          var rep = new GoatRepository();
          var goat = rep.GetByName(name);

          var model = FarmFactory.CreateAnimalModel<GoatViewModel>(goat) as GoatViewModel;

          model.MilkProduction = rep.MilkProduction(goat);

          var list = rep.GetAll().Select(g => FarmFactory.CreateAnimalModel<GoatViewModel>(g)).ToList();

          return View("~/Views/Animals/Goats.cshtml", list);
        }
      }  
    }

Вид

   @model IEnumerable<FarmMVC.Models.GoatViewModel>

   <div class="panel panel-default">
     <div class="panel-body">
        @Html.DisplayNameFor(model => model.MeatProduction)
        @Model.Sum(i => i.Meat)
     </div>
   </div>

Как я могу отслеживатьнад каким объектом я работаю

  namespace FarmMVC.Factories
  {
    public static class FarmFactory
    {
      public static T CreateAnimalModel<T>(AnimalBase a)
        where T : AnimalViewModel
      {

          return (T)Activator.CreateInstance(typeof(T), a);

      }
    }
  }

Метод

   namespace Farm.Repositories
   {
     public class GoatRepository : GenericRepository<Goat>
     {
       public int MeatProduction(Goat goat)
       {
          if (goat == null)
          {
              throw new ArgumentNullException(nameof(goat));
          }


          if (goat.Age > 13 && goat.Weight >= 50 && goat.Weight <= 100)
          {
              goat.Meat += getrandom.Next(3, 6);
              Remove(goat);
          }
          else if (goat.Weight > 100)
          {
              goat.Meat += getrandom.Next(5, 9);
              Remove(goat);
          }
          else if (IsDead(goat))
          {
              goat.Meat += getrandom.Next(2, 4);
              Remove(goat);
          }

          return goat.Meat;
        }
      }
    }

В последних двух строках контроллера мне нужно хранить все внутри списка, так как я работаюв IEnumerables, но поскольку я уже удалил объект внутри метода, я ничего не получаю, но мне нужно отслеживать значение Meat

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...