2016-04-27 1 views
0

J'essaie de savoir comment regrouper un certain nombre de membres privés. Par exemple:Membres privés de classe figurant dans un groupe

public class Phone 
{ 
    private string model; 
    private string manufacturer; 
    ... 
} 

Dans ce cas, je peux appeler les membres par une méthode get. ce que je veux vraiment, c'est les regrouper sous 'propriété; groupe. Il devrait être quelque chose comme

Phone phone = new Phone(); 
string model = phone.Properties.model; 
+2

Qu'est-ce que vous essayez exactement d'accomplir et pourquoi pensez-vous que ce que vous avez décrit est la façon de le faire? –

+0

J'essaie de le rendre mieux organisé. Cette classe a beaucoup de fonctionnalités/membres. J'essaie d'y accéder plus facilement. – Dan

Répondre

4

Utilisez une classe imbriquée:

public class Phone 
{ 
    public class PropertiesModel 
    { 
     public string model; 
     public string manufacturer; 
    } 

    public PropertiesModel Properties { get; } 

    public Phone() 
    { 
     Properties = new PropertiesModel(); 

     Properties.model = "foo"; 
     Properties.manufacturer = "bar"; 
    } 
} 

Puis, de l'extérieur, comme dans votre exemple:

Phone phone = new Phone(); 
string model = phone.Properties.model; 

Check it


Sur le titre de la question, où vous mentionnez private, vous pouvez les rendre privés à la classe (en faisant votre type PropertiesModel et votre propriété Propertiesprivate), mais alors votre exemple ne fonctionnera qu'à partir de la classe elle-même.

Les membres de la classe PropertiesModel (model, manufacturer) devront encore être public, mais la classe elle-même (et la propriété pour y accéder) peuvent être private:

Check it - ceci donnera une erreur de compilation puisque je essaie d'accéder phone.Properties.model, mais il est privé

la classe imbriquée peut aussi avoir private membres, mais ceux qui ne seront pas accesible même de la classe « parent » (uniquement à partir de la classe imbriquée lui-même)

+0

Merci beaucoup! – Dan