имеются два проекта, один консоль а другой класс-библиотека.
не получается их связать, вот здесь
C# |
1
| TarifsOpenFileText context = new TarifsOpenFileText |
|
();
пишет что "ClassLibrary1.TarifsOpenFileText" недоступен из-за его уровня защиты.
вот код консоли:
C# |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ClassLibrary1;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
if (args.Count() == 0)
{
WriteAndInputLine("Имя файла не задано");
return;
}
string filename = args[0];
string tarifssFilename = null;
if (args.Count() >= 2)
tarifssFilename = args[1];
bool exit = false;
while (!exit)
{
Console.WriteLine("Введите нужную команду операции: ");
Console.WriteLine("Команда операции 1(Поиск самого длинного слова в тексте) - SearchWord ");
Console.WriteLine("Команда операции (Выход) - Exit ");
Console.Write(">>> ");
string input = Console.ReadLine();
if (String.IsNullOrWhiteSpace(input)) continue;
string[] command = input.Split(' ');
int count = command.Count();
string commandName = command[0].ToUpper();
switch (commandName)
{
case ExitCommandName:
exit = true;
break;
case SearchCommandName:
SearchExecute(filename);
break;
case LoadTarifsCommandName:
LoadTarifsExecute(tarifssFilename);
break;
default:
Console.WriteLine("Неизвестная команда " + commandName);
double i;
if (double.TryParse(commandName, out i))
Console.WriteLine("This is a number");
break;
}
}
}
private static string WriteAndInputLine(string message)
{
Console.WriteLine(message);
return Console.ReadLine();
}
private static void SearchExecute(string filename)
{
try
{
Console.WriteLine("Обработан файл под названием " + filename);
LibraryOfOpenText.ReadWords(filename);
}
catch (Exception ex)
{
Console.WriteLine("Ошибка: " + ex.Message);
return;
}
}
private static void LoadTarifsExecute(string filename)
{
if (string.IsNullOrWhiteSpace(filename))
{
Console.WriteLine("Не задано имя файла с тарифами");
return;
}
TarifsOpenFileText context = new TarifsOpenFileText();
context.FileName = filename;
try
{
_tarifss = context.LoadTarifs();
Console.WriteLine("Загружено сущностей: " + _tarifss.Count);
}
catch (Exception ex)
{
Console.WriteLine("Ошибка: " + ex.Message);
}
}
private static List<Tarifs> _tarifss = new List<Tarifs>();
private static void PrintEmployee(Tarifs tarifss)
{
Console.WriteLine(tarifss.AllInformation);
Console.WriteLine(tarifss.Id);
Console.WriteLine(tarifss.NameTarif);
Console.WriteLine(tarifss.TypeOfTariffication);
Console.WriteLine(tarifss.PricePerMinute);
Console.WriteLine(tarifss.RentalFee);
Console.WriteLine(tarifss.SetUpFee);
}
#region Названия команд
public const string ExitCommandName = "EXIT";
public const string SearchCommandName = "SEARCHWORD";
public const string LoadTarifsCommandName = "LOADTAR";
public const string ShowEmployeeCommandName = "SHOWEMP";
public const string ShowAllEmployeesCommandName = "SHOWEMPALL";
public const string ChangeEmployeeSurnameCommandName = "CHANGEEMPSURNAME";
#endregion
}
} |
|
Вот код библиотеки:
C# |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ClassLibrary1
{
public class TarifsOpenFileText
{
public string FileName { get; set; }
public List<Tarifs> LoadTarifs()
{
List<Tarifs> tarifss = new List<Tarifs>();
using (StreamReader sr = File.OpenText(FileName))
{
int lineNo = 0;
while (!sr.EndOfStream)
{
lineNo++;
string line = sr.ReadLine();
if (string.IsNullOrWhiteSpace(line) || line[0] == '*')
continue; // пропускаем пустые строки и комментарии
string[] attributeValues = line.Split('\t');
if (attributeValues.Count() < 4)
throw new FormatException(
String.Format("Неверный формат строки №{0}. Недостаточное количество атрибутов", lineNo));
try
{
Tarifs newTarifs = new Tarifs();
newTarifs.Id = int.Parse(attributeValues[0]);
newTarifs.NameTarif = attributeValues[1];
newTarifs.TypeOfTariffication = bool.Parse(attributeValues[2]);
newTarifs.PricePerMinute = double.Parse(attributeValues[3]);
newTarifs.RentalFee = double.Parse(attributeValues[4]);
newTarifs.SetUpFee = double.Parse(attributeValues[5]);
tarifss.Add(newTarifs);
}
catch (Exception ex)
{
throw new FormatException(
String.Format("Ошибка при обработке строки №{0}. {1}", lineNo, ex.Message),
ex);
}
}
}
return tarifss;
}
}
}
} |
|
и два дополнительных проекта:
C# |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassLibrary1
{
public class Tarifs
{
private int _id;
private string nameTarif;
private double pricePerMinute; // плата за минуту разговора
private double rentalFee; // абонентская плата
private bool typeOfTariffication; // тип тарификации (true - поминутная; false - посекундная)
private double setUpFee; // плата за соединение
public int Id
{
get { return _id; }
set
{
if (value < 0)
throw new Exception("Номер тарифа не может быть меньше нуля");
_id = value;
}
}
public string NameTarif
{
get { return nameTarif; }
set { nameTarif = value; }
}
public bool TypeOfTariffication
{
get { return typeOfTariffication; }
set { typeOfTariffication = value; }
}
public double PricePerMinute
{
get { return pricePerMinute; }
set { pricePerMinute = value; }
}
public double RentalFee
{
get
{
rentalFee = 0.9 * pricePerMinute;
return rentalFee;
}
set { rentalFee = value; }
}
public double SetUpFee
{
get { return setUpFee; }
set { setUpFee = value; }
}
public string AllInformation // пример readonly property, значение которого рассчитывается
{
get
{
return Id + NameTarif + TypeOfTariffication + PricePerMinute + RentalFee + SetUpFee;
}
}
}
} |
|
и
C# |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ClassLibrary1
{
public class LibraryOfOpenText
{
public static void ReadWords(string filename)
{
Console.WriteLine();
Stack<string> stack = new Stack<string>();
string line = File.ReadAllText(filename, Encoding.Default);
string[] words = line.Split(new string[] { ",", " ", "\r\n", "\t" }, StringSplitOptions.RemoveEmptyEntries);
int maxlength = 0;
for (int i = 0; i < words.Length; i++)
if (maxlength < words[i].Length) maxlength = words[i].Length;
for (int i = 0; i < words.Length; i++)
{
if (words[i].Length == maxlength && !stack.Contains(words[i])) stack.Push(words[i]);
}
string[] maxwords = stack.ToArray();
int count;
for (int i = 0; i < maxwords.Length; i++)
{
count = 0;
foreach (string x in words)
{
if (x == maxwords[i]) ++count;
}
Console.WriteLine("{2}. Самое длинное слово: {0}\n Число вхождений: {1}", maxwords[i], count, i);
}
Console.ReadKey();
}
}
} |
|
Помогите пожалуйста...
Заранее спасибо!!!