Я читаю файлы в DataTables, но мне нужно использовать разные имена файлов для другой версии моего продукта. Как я могу получить номер версии продукта, введенный пользователем в качестве глобальной переменной в классе?Чтение пользовательского ввода в глобальную строку C#
Я хочу применить оператор case к строке «using (TextFieldParser)», чтобы он использовал правильные файлы для правильных версий.
static public DataTable VolumeImport()
{
DataTable Volumes = new DataTable();
Volumes.Columns.Add("MediaId", typeof(string));
Volumes.Columns.Add("MediaTypeName", typeof(string));
Volumes.Columns.Add("MediaGroupName", typeof(string));
Volumes.Columns.Add("Barcode", typeof(string));
Volumes.Columns.Add("PoolName", typeof(string));
using (TextFieldParser volumes = new TextFieldParser("C:\\Input Files\\752.dat"))
{
volumes.TextFieldType = FieldType.Delimited;
volumes.Delimiters = new string[] { "," };
volumes.HasFieldsEnclosedInQuotes = true;
volumes.TrimWhiteSpace = true;
string[] deviceprops;
while (!volumes.EndOfData)
{
deviceprops = volumes.ReadFields();
Volumes.Rows.Add((deviceprops[3]).Replace("'", String.Empty), (deviceprops[7]).Replace("'", String.Empty), (deviceprops[8]).Replace("'", String.Empty),
(deviceprops[16]).Replace("'", String.Empty), (deviceprops[50]).Replace("'", String.Empty));
}
}
return Volumes;
}
Я добавлю следующее, но оно никогда не запрашивает версию. Я подозреваю, что это потому, что его не входит в пустоте Main
public class Version
{
public string nbuversion { get; set; }
public void GetVersion()
{
Console.WriteLine("Enter the Version:"); // Prompt for version
string nbuversion = Console.ReadLine();
}
}
Update: Я удалось решить эту проблему на основе ниже посоветуйте. Большое спасибо.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualBasic.FileIO;
using System.IO;
using System.Xml;
using System.Data;
public class DataCollect
{
static public Dictionary<int, string> Day_Lookup = new Dictionary<int, string>();
public string nbuversion { get; set; }
public string filename { get; set; }
class NBUXMLWriter
{
static public void Main(string[] args)
{
DataCollect s = new DataCollect();
s.GetVersion();
s.SetFileLocations();
s.DayImport();
}
}
public void GetVersion()
{
Console.WriteLine("Enter the Version:");
nbuversion = Console.ReadLine();
}
public void SetFileLocations()
{
switch (nbuversion)
{
case "7.6":
filename = "input1.txt";
break;
case "7.7":
filename = "input2.txt";
break;
}
}
public void DayImport()
{
string filepath = "C:\\Input Files\\Static\\";
using (TextFieldParser daysofweek = new TextFieldParser((filepath)+(filename)))
{
daysofweek.TextFieldType = FieldType.Delimited;
daysofweek.Delimiters = new string[] { " " };
daysofweek.HasFieldsEnclosedInQuotes = true;
daysofweek.TrimWhiteSpace = true;
string[] dayprops;
while (!daysofweek.EndOfData)
{
dayprops = daysofweek.ReadFields();
int daynumber;
bool daynumberparsed = Int32.TryParse((dayprops[0]), out daynumber);
string dayname = dayprops[1];
Day_Lookup.Add((daynumber), (dayname));
}
}
Console.WriteLine("Day is" + Day_Lookup[(4)]);
Console.ReadKey();
}
}
, где вы создали объект для класса 'Version', и где это метод.' GetVersion() ' –
« Я подозреваю, что это связано с тем, что он не является частью Main Void ». хмм. никогда не слышал, что все действия консоли должны быть частью метода Main. Является ли метод GetVersion() ссылкой где-нибудь? Действительно ли это вызвано/выполнено? Действительно ли ваше приложение составлено в консольном приложении? Здесь много возможностей. Время для некоторой отладки ... –