Я изучаю методы доступа и перечисление. Я написал общедоступный класс «Автомобиль» под пространством имен «Транспортные средства» и установил частные свойства, такие как _manufacturer, _model, _year и _color. Я хотел бы написать один метод для доступа к свойствам и другой для их установки / обновления. Это мой класс:
using System;
namespace Vehicles
{
public class Car
{
private string _manufacturer;
private string _model;
private string _year;
private string _color;
public void honkHorn()
{
// Add argument for a file name?
// Code here to play a WAV file?
MessageBox.Show("Honk!");
}
public string getCarInfo(string whichProperty)
{
switch (whichProperty)
{
case ("manufacturer"):
return _manufacturer;
case ("model"):
return _model;
case ("year"):
return _year;
case ("color"):
return _color;
default:
return null;
}
}
public void setCarInfo(string whichProperty, string newValue)
{
switch (whichProperty)
{
case ("manufacturer"):
_manufacturer = newValue;
break;
case ("model"):
_model = newValue;
break;
case ("year"):
_year = newValue;
break;
case ("color"):
_color = newValue;
break;
}
}
}
}
А это моя форма:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Vehicles;
namespace CS_Enumeration
{
public partial class Form1 : Form
{
public Car myCar = new Car();
public Form1()
{
InitializeComponent();
myCar.setCarInfo("manufacturer", "Ford");
labelManfValue.Text = myCar.getCarInfo("manufacturer");
myCar.setCarInfo("model", "Ranger");
labelModelValue.Text = myCar.getCarInfo("model");
myCar.setCarInfo("year", "2012");
labelYearValue.Text = myCar.getCarInfo("year");
myCar.setCarInfo("color", "Blue");
labelColorValue.Text = myCar.getCarInfo("color");
}
private void button1_Click(object sender, EventArgs e)
{
myCar.honkHorn();
}
}
}
Это действительно лучший способ написать единственный метод, который может получить / установить? Сначала я попытался привести строковое значение, которое соответствует имени свойства объекта, и вернуть фактическое свойство, но это не работает (если кто-то не знает, как привести строку к свойству объекта?).
Спасибо за ответы. Это все упражнение из книги, которую я читаю. Это говорит о том, что не все должно быть публичным, но не все должно быть приватным. Так как же узнать, когда вещи должны / не должны быть публичными / частными? Похоже, книга ведет меня в неправильном направлении относительно того, что такое хороший дизайн кодирования. У кого-нибудь есть предложения по изучению хороших методов проектирования кодирования для Visual C #?