2014-09-07 8 views
0

나는 내 클래스 내에서 모두 매우 유사한 5 개의 속성을가집니다. 나는 그들을 묶고 싶다. 그들이 사용에 포함 된 클래스는 다음과 같이합니다 :그룹 부분 클래스 내의 속성

Car car = new Car(); 
car.PropA 
    .PropB 
    .PropC 

.. 난이 3 곳이되게 할 것입니다 :

class Car 
{ 
    public string PropA { get; set; } 
    public string PropB { get; set; } 
    public string PropC { get; set; } 

    public Car() { } 
} 

그래서 인텔리로, 나는되게 될 것이다. 내가 원하는 것은 그것이 자신의 소그룹에 속하기 때문에 나는해야만 할 것입니다 :

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

이제 분명히 이런 일이 소품 주변의 요구 사항의 성격에 따라 달라 (이것은 매우 간단한 예제 일 - 모든 소품에서 설정해야 동시). 그러나 공개 된 사람들은 수업의 사용자가 반드시 요구 사항의 성격을 알지는 못하며 공개 설정자는 수업을 어떻게 의도했는지에 대한 방법을 허용 할 수 있습니다.