Я относительно новичок в C #, выполнив большую часть моего предыдущего программирования на VB6. Я знаю, что C # гораздо более явно напечатан, чем VB, но я надеюсь, что есть решение для моей проблемы.
Я работаю над проектом, который предназначен для открытия, анализа, проверки и, в конечном итоге, редактирования 5 различных файлов CSV, которые используются в качестве входных данных для приложения, которое мы используем. Манипулирование файлами CSV вручную - это то, что делается сейчас, но для большинства пользователей это затруднительно из-за отсутствия документации и поддержки со стороны первоначального разработчика. Моя цель - создать графический интерфейс, который позволит пользователям напрямую редактировать поля и создавать новый файл CSV для использования в качестве импорта. Вот основная структура сейчас:
public class Dataset
{
public Dictionary<string,File1> file1 = new Dictionary<string,File1>();
public Dictionary<string,File2> file2 = new Dictionary<string,File2>();
public Dictionary<string,File3> file3 = new Dictionary<string,File3>();
public Dictionary<string,File4> file4 = new Dictionary<string,File4>();
public Dictionary<string,File5> file5 = new Dictionary<string,File5>();
public void SelectFiles()
{
//User specifies which file(s) are to be opened (default is all 5 files)
}
public class File1
{
public string Field_1 {get ; set}
public string Field_2 {get ; set}
.
.
.
public string Field_10 {get ; set}
}
public class File2
{
public string Field_1 {get ; set}
public string Field_2 {get ; set}
.
.
.
public string Field_31 {get ; set}
}
public class File3
{
public string Field_1 {get ; set}
public string Field_2 {get ; set}
.
.
.
public string Field_57 {get ; set}
}
public class File4
{
public string Field_1 {get ; set}
public string Field_2 {get ; set}
.
.
.
public string Field_68 {get ; set}
}
public class File5
{
public string Field_1 {get ; set}
public string Field_2 {get ; set}
.
.
.
public string Field_161 {get ; set}
}
}
Задача состоит в считывании данных из CSV в каждый из словарей. Сейчас это достигается с помощью 5 разных функций (фактически одна функция перегружена 5 раз)
public Dictionary<string,File1>ReadFile(string file)
{
//Open and Parse File #1, and store in File1 class and accessed by file1 dictionary
}
public Dictionary<string,File2>ReadFile(string file)
{
//Open and Parse File #2, and store in File2 class and accessed by file2 dictionary
}
public Dictionary<string,File3>ReadFile(string file)
{
//Open and Parse File #3, and store in File3 class and accessed by file3 dictionary
}
public Dictionary<string,File4>ReadFile(string file)
{
//Open and Parse File #4, and store in File4 class and accessed by file4 dictionary
}
public Dictionary<string,File5>ReadFile(string file)
{
//Open and Parse File #5, and store in File5 class and accessed by file5 dictionary
}
Код для открытия и анализа файла CSV практически идентичен, отличается только типом для словаря. Поэтому, когда я изменяю эту функцию, я должен быть уверен, что внесу идентичные изменения в другие 4 функции, и я беспокоюсь, что это сделает поддержание кода в будущем более проблематичным. Есть ли какой-нибудь способ, которым я могу создать одну функцию без перегрузок, где я могу передать тип в качестве параметра функции?
public Dictionary<string,[UnknownType]>ReadFile(string file, [UnknownType] typ)
{
//Open and Parse File and read into class specified by typ
}