Работа с классом, подразделы - C#
Формулировка задачи:
Создаю класс для работы с памятью:
Инициализирую так: но, после этого я бы хотел иметь доступ к переменным(только к чтению), чтоб это выглядело вот так: Вопрос, как мне сделать такой подкласс? (или не подкласс, сам не знаю, что нужно использовать)
class Engine
{
public static string Name
{
get
{
return Name;
}
private set
{
Name = value;
}
}
public static int Id
{
get
{
return Id;
}
private set
{
Id = value;
}
}
public static IntPtr Handle
{
get
{
return Handle;
}
private set
{
Handle = value;
}
}
public void Dispose(bool dispose) //помогите правильно создать метод
{
if(dispose == true)
{
CloseHandle(Engine.Handle); //
} else { }
}
public Engine(string name)
{
Name = name;
if (name != null) Id = GetProcessIdByName(name); else { throw new System.ArgumentNullException("name cannot be null", Name); } //не уверен
if(Id != 0) { throw new System.ArgumentOutOfRangeException("process isnt exist", Name); }
}
}Engine a = new Engine("CrackMe");IntPtr = a.Settings.Handle; // Чтоб так с каждой переменной (Id, Handle, Name)
up up, неужели никто не знает?
Решение задачи: «Работа с классом, подразделы»
textual
Листинг программы
class Engine
{
private const int DefaultId = 1;
private const string DefaultName = "Foo";
private const int DefaultHandle = 1;
public Settings Settings { get; private set; }
public Engine()
{
Settings = new Settings(DefaultId,DefaultName,DefaultHandle);
}
public void ChangeSettingsId(int newId)
{
Settings = new Settings(newId, Settings.Name, Settings.Handle);
}
public void ChangeSettingsName(string newName)
{
if (string.IsNullOrEmpty(newName)) throw new ArgumentException(nameof(newName));
Settings = new Settings(Settings.Id, newName, Settings.Handle);
}
public void ChangeSettingsHandle(int newHandle)
{
Settings = new Settings(Settings.Id, Settings.Name, Settings.Handle);
}
}
class Settings
{
public int Id { get; }
public string Name { get; }
public int Handle { get; }
public Settings(int id, string name, int handle)
{
Id = id;
Name = name;
Handle = handle;
}
}