Получение и возвращение неопределенной коллекции - C#
Формулировка задачи:
Для начала, если кто то придумает название более информативное буду благодарен.
Мне надо два метода, они оба будут работать с файлами txt, первый будет считывать и возвращать все содержимое файла в виде коллекции (каждая строка - новый элемент), второй принимать коллекцию и записывать ее в файл (не дописывать в конец а перезаписывать если файл существует)
Загвоздка в том что коллекция может быть List или HashSet или SortedSet или Queue или Stack, если во все перечисленное нельзя впихнуть Queue или Stack, то я от них откажусь.
на данный момент это выглядит так (но тут все через List работает, мне надо уйти от этого):
Первый вопрос, можно ли как-нибудь что бы метод работал со всеми 5 коллекциями?
Второй, как лучше это сделать? Как вариант:
но мне внутри но внутри метода я не могу сделать:
если я к перечислению добавляю
получаю ошибку что все кроме
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
public static class FileManager2
{
public static List<string> GetAllFileLines(string FilePath, bool IgnoreEmptyString)
{
List<string> list = new List<string>();
try
{
StreamReader file = new StreamReader(FilePath);
string temp;
while ((temp = file.ReadLine()) != null)
{
if (IgnoreEmptyString && temp != "") list.Add(temp);
else list.Add(temp);
}
file.Close();
return list;
}
catch
{
return list;
}
}
public static bool CreateAndAddList(string FilePath, List<string> list)
{
if (File.Exists(FilePath) == false)
{
string dir = Path.GetDirectoryName(FilePath);
if (string.IsNullOrEmpty(dir) == false) Directory.CreateDirectory(dir);
File.CreateText(FilePath).Close();
}
try
{
StreamWriter file = new StreamWriter(FilePath);
foreach (string temp in list) file.WriteLine(temp);
file.Close();
return true;
}
catch
{
return false;
}
}
}public static bool CreateAndAddList(string FilePath, ICollection<string> list); // тут в list будут записаны все данные из файла public static void GetAllFileLines(string FilePath, ref ICollection<string> list, bool IgnoreEmptyString);
GetAllFileLines
надо обнулитьlist
причем не черезClear
, а через= new ...
, только new что. по этому как то не очень мне этот вариант, а до вызова метода очищать список мне не хочется. Может как то можно через обобщения, только как мне перечислить все эти варианты списков, я делаю так: where C : HashSet<string>
where C : SortedSet<string>
where C : List<string>C list = new C(); // или C<string> list = new C<string>();
where C: new()
new
лишнее.Решение задачи: «Получение и возвращение неопределенной коллекции»
textual
Листинг программы
var data1 = new List<string>(File.ReadLines(@"M:\test.txt")); var data2 = new HashSet<string>(File.ReadLines(@"M:\test.txt")); var data3 = new SortedSet<string>(File.ReadLines(@"M:\test.txt"));