Изучаю контейнеры, а именно Autofac. В моем примере у меня есть данные datatable, есть контейнер и два класса, реализующие один интерфейс, по логике я хочу чтобы они запускались одновременно, я их регистрирую в контейнере но, когда класс один, то метод, который в нем, отрабатывает отлично. Когда класса два и в каждом методы разной реализации, то отрабатывает все равно один, вместе почему то они не работают. Наверное где то какой то общий объект они использую. Подскажите как исправить Код
using System;
using System.Data;
using Autofac;
namespace loc
{
public class Program
{
private static IContainer Container { get; set; }
static void Main(string[] args)
{
DataTable table = new DataTable();
table.Columns.Add("Dosage", typeof(int));
table.Columns.Add("Drug", typeof(string));
table.Columns.Add("Patient", typeof(string));
table.Columns.Add("Date", typeof(DateTime));
// Here we add five DataRows.
table.Rows.Add(25, "Indocin", "David", DateTime.Now);
table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);
var builder = new ContainerBuilder();
builder.RegisterType<CsvOutput>().As<IOutput>();
builder.RegisterType<Cs2>().As<IOutput>();
Container = builder.Build();
WriteDatatoCsv(table);
WriteDatatoCsv2(table);
Console.Write("******");
Console.ReadKey();
}
public static void WriteDatatoCsv(DataTable table)
{
// Create the scope, resolve your IDateWriter,
// use it, then dispose of the scope.
using (var scope = Container.BeginLifetimeScope())
{
var writer = scope.Resolve<IOutput>();
writer.Write(table);
}
}
public static void WriteDatatoCsv2(DataTable table)
{
// Create the scope, resolve your IDateWriter,
// use it, then dispose of the scope.
using (var scope = Container.BeginLifetimeScope())
{
var writer2= scope.Resolve<IOutput>();
writer2.Write(table);
}
}
}
}
и два класса
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace loc
{
public interface IOutput
{
void Write(DataTable content);
}
class CsvOutput : IOutput
{
public void Write(DataTable content)
{
StringBuilder sb = new StringBuilder();
IEnumerable<string> columnNames = content.Columns.Cast<DataColumn>().
Select(column => column.ColumnName);
sb.AppendLine(string.Join(";", columnNames));
foreach (DataRow row in content.Rows)
{
IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
sb.AppendLine(string.Join(";", fields));
}
File.WriteAllText(@"d:\test544.csv", sb.ToString());
}
}
class Cs2: IOutput
{
public void Write(DataTable content)
{
var builder = new StringBuilder();
builder.Append("<html><body><table>");
foreach (DataRow r in content.Rows)
{
builder.Append("<tr>");
foreach (var o in r.ItemArray)
{
builder.Append("<td>");
builder.Append(o.ToString());
builder.Append("</td>");
}
builder.Append("</tr>");
}
builder.Append("</table></body></html>");
File.WriteAllText(@"d:\out.html", builder.ToString());
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Делаю свою консоль на c# и winforms, столкнулся с проблемой : для реализации методов Read и ReadLine надо подождать, пока пользователь введет данные(если...
У меня есть словарь, в котором хранятся всевозможные биграммы(a:b,b:c,a:b,a:c)В результативном словаре должны хранится ключ-значения
На форуме Unity нашёл решение для ранее появившейся у меня проблемы, связанной с пересечение двух ScrollRect'ов(горизонтально и вертикально)Однако,...
Пытаюсь в Unity3D с помощью компонента VideoPlayer отобразить видео по URL (с IP-камеры)При подключении требуется указать логин и пароль