Свойства группы в частичном классе
У меня есть 5 свойств в моем классе, которые все очень похожи; Я хочу сгруппировать их. Класс, в котором они содержатся, выглядит следующим образом:
class Car
{
public string PropA { get; set; }
public string PropB { get; set; }
public string PropC { get; set; }
public Car() { }
}
Таким образом, с Intellisense, мне будут представлены:
Car car = new Car();
car.PropA
.PropB
.PropC
..Я был бы представлен с 3 свойствами. Я хочу, чтобы он содержался в своей маленькой группе, поэтому мне нужно сделать следующее:
car.Props.PropA = "пример";
Я создал частичный класс, чтобы скрыть их, но я не уверен, что это правильный способ сделать это:
class Car
{
public Props { get; set; }
public Car() { }
}
partial class Props
{
public string PropA { get; set; }
public string PropB { get; set; }
public string PropC { get; set; }
}
Есть ли лучший способ сделать это? Я спрашиваю, потому что я создаю библиотеку классов и удобство использования очень важно.
2 ответа
partial
Ключевое слово используется для разделения реализации класса между несколькими файлами. Зная это, это не поможет (или не повредит) в этой ситуации.
Не зная больше о вашем дизайне, ваше решение кажется разумным. Просто избавься от partial
Ключевое слово, здесь не подходит.
Согласился с тем, что сказал Патрик. У меня был вопрос по поводу ваших публичных сеттеров, и мне было любопытно, как себя вести.
если вы надеетесь, что другие люди будут использовать класс вещей (и если предположить, что это был не просто смоделированный пример), вы уверены, что хотите, чтобы люди могли просто иметь возможность устанавливать свойства в ваших классах, не проходя через метод / функция, которая проверяет и / или обрабатывает установку свойства?
это можно сделать так:
public class Props
{
public string PropA { get; private set; }
public string PropB { get; private set; }
public string PropC { get; private set; }
}
public Props() { }
public SetProps(string propA, string propB, string propC)
{
this.PropA = propA;
this.PropB = propB;
this.PropC = propC;
}
Теперь, очевидно, что-то подобное будет зависеть от характера требований к подпоркам (и это очень простой пример - все подпорки должны быть установлены одновременно). Но с общедоступными установщиками пользователь класса не обязательно будет знать природу требований, а общедоступные сеттеры могут потенциально позволить им обойти, как предполагалось, использование класса.