Работа с классом, подразделы - C#

Узнай цену своей работы

Формулировка задачи:

Создаю класс для работы с памятью:
Листинг программы
  1. class Engine
  2. {
  3. public static string Name
  4. {
  5. get
  6. {
  7. return Name;
  8. }
  9. private set
  10. {
  11. Name = value;
  12. }
  13. }
  14. public static int Id
  15. {
  16. get
  17. {
  18. return Id;
  19. }
  20. private set
  21. {
  22. Id = value;
  23. }
  24. }
  25. public static IntPtr Handle
  26. {
  27. get
  28. {
  29. return Handle;
  30. }
  31. private set
  32. {
  33. Handle = value;
  34. }
  35. }
  36. public void Dispose(bool dispose) //помогите правильно создать метод
  37. {
  38. if(dispose == true)
  39. {
  40. CloseHandle(Engine.Handle); //
  41. } else { }
  42. }
  43. public Engine(string name)
  44. {
  45. Name = name;
  46. if (name != null) Id = GetProcessIdByName(name); else { throw new System.ArgumentNullException("name cannot be null", Name); } //не уверен
  47. if(Id != 0) { throw new System.ArgumentOutOfRangeException("process isnt exist", Name); }
  48. }
  49. }
Инициализирую так:
Листинг программы
  1. Engine a = new Engine("CrackMe");
но, после этого я бы хотел иметь доступ к переменным(только к чтению), чтоб это выглядело вот так:
Листинг программы
  1. IntPtr = a.Settings.Handle; // Чтоб так с каждой переменной (Id, Handle, Name)
Вопрос, как мне сделать такой подкласс? (или не подкласс, сам не знаю, что нужно использовать)
up up, неужели никто не знает?

Решение задачи: «Работа с классом, подразделы»

textual
Листинг программы
  1. class Engine
  2.     {
  3.         private const int DefaultId = 1;
  4.         private const string DefaultName = "Foo";
  5.         private const int DefaultHandle = 1;
  6.  
  7.  
  8.         public Settings Settings { get; private set; }
  9.  
  10.         public Engine()
  11.         {
  12.             Settings = new Settings(DefaultId,DefaultName,DefaultHandle);
  13.         }
  14.  
  15.         public void ChangeSettingsId(int newId)
  16.         {
  17.              Settings = new Settings(newId, Settings.Name, Settings.Handle);
  18.         }
  19.  
  20.         public void ChangeSettingsName(string newName)
  21.         {
  22.             if (string.IsNullOrEmpty(newName)) throw new ArgumentException(nameof(newName));
  23.             Settings = new Settings(Settings.Id, newName, Settings.Handle);
  24.         }
  25.  
  26.  
  27.         public void ChangeSettingsHandle(int newHandle)
  28.         {
  29.             Settings = new Settings(Settings.Id, Settings.Name, Settings.Handle);
  30.         }
  31.     }
  32.  
  33. class Settings
  34.     {
  35.         public int Id { get; }
  36.         public string Name { get; }
  37.         public int Handle { get; }
  38.  
  39.         public Settings(int id, string name, int handle)
  40.         {
  41.             Id = id;
  42.             Name = name;
  43.             Handle = handle;
  44.         }
  45.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут