2014-09-07 2 views
0

У меня есть 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 = "example";

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

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; } 
} 

Есть ли лучший способ пойти по этому поводу? Я спрашиваю, потому что я создаю библиотеку классов, и удобство использования очень важно.

ответ

3

Ключевое слово partial используется для разделения реализации класса среди нескольких файлов. Зная, что в этой ситуации это не помогает (или болит).

Не зная больше о вашем дизайне, ваше решение кажется разумным. Просто избавитесь от ключевого слова partial, здесь это не подходит.

1

Согласен с тем, что сказал Патрик. Однако у меня был вопрос о ваших публичных сеттерах, и мне было любопытно, как справиться с собой.

Если вы надеетесь, что другие люди будут использовать предметный класс (и если предположить, что это был не просто пример издевательства), вы уверены, что хотите, чтобы люди просто могли волей-неволей устанавливать свойства в своих классах не пройдя метод/функцию, которая проверяет и/или обрабатывает настройку свойства?

это может быть сделано, как:

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; 
} 

Теперь, очевидно, делать что-то, как это будет зависеть от характера требований вокруг реквизита (и это очень простой пример - все бутафория должны быть установлены в в то же время). Но с публичными сеттерами пользователь класса не обязательно будет знать характер требований, и публичные сеттеры могут потенциально позволить им способ, которым он предназначался для использования класса.

Смежные вопросы