2015-12-16 1 views
2

Je suis vraiment nouveau à ce sujet, mais j'ai 3 classes, et l'un d'eux utilise la ligne de commande pour demander à l'utilisateur d'appuyer sur 1 ou 2 pour répondre aux questions, puis j'utilise un get; set; pour recueillir cette information dans un autre classe.Comment obtenir les valeurs d'une classe d'utilisation dans une autre?

Je souhaite écrire cette information dans un document texte. Le problème est, ma classe où j'utilise StreamWriter ne reconnaît pas les mots que j'ai utilisés pour définir l'information dans l'autre classe. Toute aide est la bienvenue. C'est là que je veux que l'information aille.

StreamWriter writer = new StreamWriter(@"C:\Users\Dan\Documents\testText.txt"); 
writer.WriteLine("Passenger Information" //want the SeatSelection in here); 
writer.Close();  

L'information originale provient d'ici. Bien que dans ce code, il reconnaît le mot "SeatSelection"? Pourquoi reconnaît-il ici mais pas au-dessus?

Console.Clear(); 
Console.WriteLine("Please select first or third class for your trip. "); 
Console.WriteLine("1) First Class Compartment."); 
Console.WriteLine("2) Third Class with Compartments."); 
Console.WriteLine("3) Car C Open seating."); 
Console.WriteLine("4) Car D Open seating."); 
Console.WriteLine("5) Return to booking main menu."); 
bool validInput = false; 

do 
{ 
    validInput = true; 
    ConsoleKeyInfo key = Console.ReadKey(); 
    switch (key.Key) 
    { 
     case ConsoleKey.D1: 
     case ConsoleKey.NumPad1: 
      seatClass.SeatSelection = "First Class"; 
      FirstClass(); 
      break; 
     case ConsoleKey.D2: 
     case ConsoleKey.NumPad2: 
      seatClass.SeatSelection = "Third Class Compartment"; 
      ThirdClassCompartments(); 
      break; 
+6

Il semble qu'il vous manque une référence à 'seatClass'. Il serait utile que vous montriez tout le code, et cela inclurait l'utilisation de directives, d'espaces de noms, de noms de classes et de noms de méthodes dans ce cas, y compris cette information pour votre classe 'Seat'. – ragerory

+0

Y at-il une chance que vous puissiez mettre à jour votre code, afin que nous puissions voir vos classes entières. Fondamentalement, vous voulez obtenir l'instance appropriée de la classe Seat, puis l'utiliser dans l'instruction WriteLine. – Phil

+0

Ne changez pas la question quand votre problème change, posez une nouvelle question quand l'original n'est plus suffisant. Si vous changez la question, les réponses ne sont plus valables, ce qui n'aide personne. – Kyra

Répondre

2

Je ne suis pas sûr de ce que la structure de votre application est, mais vous voulez quelque chose le long de ces lignes:

var seatClass = UserInterface.GetSeatClass(); 

StreamWriter writer = new StreamWriter(@"C:\Users\Dan\Documents\testText.txt"); 
writer.WriteLine("Passenger Information" + seatClass.SeatSelection); 
writer.Close(); 

... où je créativement inséré une classe statique InterfaceUtilisateur de imaginaire qui renvoie une nouvelle instance d'un SeatClass de c'est la méthode GetSeatClass:

public static class UserInterface 
{ 
    public static SeatClass GetSeatClass() 
    { 
     var seatClass = new SeatClass(); 

     //code here that assigns values to seatClass 

     return seatClass; 
    } 
} 

Je peux vous donner une meilleure réponse avec plus d'informations. N'hésitez pas à poser des questions. (Je suis désolé d'avoir utilisé une classe statique lorsque vous êtes débutant. Je peux expliquer, si nécessaire.)

+0

Ok, j'ai trouvé quelque chose sur le MSDN, et j'ai réussi à mettre quelque chose ensemble qui fonctionne, mais maintenant il écrit seulement une ligne dans le fichier texte? Je vais mettre le code pour cela dans ma question, c'est trop long pour cette chose commentaire: – NadielNaylor

+0

Excellent. Je vais regarder. – Phil

0

Vous pouvez utiliser ce

var filePath = @"C:\Users\Dan\Documents\testText.txt"; 
var lines = new[] {"a line content"}; 
System.IO.File.AppendAllLines(filePath, lines); 

au lieu de choses StreamWriter.

+0

Ce n'est pas une réponse à son problème. – StijnvanGaal

+0

@StijnvanGaal problème en question est directement liée à StreamWriter et une alternative plus simple est dans cette réponse. Cela peut donc résoudre le problème en question. (Si le problème est le fait que vous avez faim et que vous ne pouvez pas manger de la viande, manger une autre alternative résout votre problème de faim?) – mecek