2009-10-08 5 views
3

Je suppose que je voulais générer une ligne de commande avec des drapeaux et ainsi de suite. Les drapeaux sont de type bool mais la ligne de commande est une chaîne comme "/ activeFlag". Y at-il un moyen de programmer un setter en C# qui prend un bool mais le getter retourne une chaîne?Convertir le type dans la méthode setter, possible? Quand oui comment?

comme

private string activeFlag { 
get { return activeFlag; } 
set { 
    // the value here should be the bool 
    activeFlag = value ? " /activeFlag" : ""; 
} 
} 

Répondre

0

Vous avez besoin d'un autre compositeur.

private string activeFlag { 
get { return _activeFlag; } 
} 
private bool activeFlagByBool { 
set { 
    // the value here should be the bool 
    _activeFlag = value ? " /activeFlag" : ""; 
} 
} 
9

n'y a pas moyen d'avoir une propriété avec différents types de données pour son setter et getter.

Qu'est-ce que vous pouvez faire est quelque chose comme ceci:

private bool IsActiveFlagSet { get { return ActiveFlag == " /activeFlag"; } } 
private string ActiveFlag { get; set; } 
+1

Je m'attendrais à une méthode "Is ..." pour retourner vrai/faux ... –

+0

@Marc Ouais vous avez raison ... c'est trop tôt = P Je vais modifier pour réfléchir. – Joseph

0

Non, mais vous pouvez utiliser une coutume TypeConverter pour obtenir la même chose, par l'intermédiaire TypeDescriptor. Si tu le voulais vraiment. Je ne suis pas sûr que cela en vaille la peine, cependant, à moins que vous vouliez désespérément l'afficher dans un DataGridView, PropertyGrid, ou similaire.

Il existe également un problème de séparation des préoccupations; le but de l'indicateur est de comprendre une valeur booléenne - la représentation de la chaîne se rapporte uniquement à l'interface utilisateur. Vous pouvez utiliser un attribut personnalisé:

[CommandLine("/activeFlag")] 
public bool IsActive {get;set;} 

et de prendre à partir de là?

Questions connexes