0
我想展開Autofac的快速入門示例。我想要做的是不寫入我想寫入文件的控制檯。我創建了一個實現IOutput的新類,它正確寫入文件。Autofac多個實現
public class FileOutput : IOutput
{
//public string FilePath { get; set; }
public void Write(string content)
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"AutoFacLog.txt", true))
{
file.WriteLine(content);
}
}
}
private static IContainer Container { get; set; }
static void Main(string[] args)
{
var builder = new ContainerBuilder();
builder.RegisterType<ConsoleOutput>().As<IOutput>();
builder.RegisterType<TodayWriter>().As<IDateWriter>();
Container = builder.Build();
WriteDate();
}
public static void WriteDate()
{
using (var scope = Container.BeginLifetimeScope())
{
var writer = scope.Resolve<IDateWriter>();
writer.WriteDate();
}
}
public class TodayWriter : IDateWriter
{
private IOutput _output;
public TodayWriter(IOutput output)
{
this._output = output;
}
public void WriteDate()
{
this._output.Write(DateTime.Today.ToShortDateString());
}
}
但是從示例程序不會直接調用此函數,我的todayWriter就是調用我的IOutput實現的東西。如果要將一個調用輸出到控制檯並在另一個調用中寫入文件,我該如何切換回來?
因此,我認爲我在文檔中弄亂了這一點。但是,我需要兩個TodayWriter的實現嗎?一個需要一個IFileOutput,另一個需要IConsoleOutput?然後用那些我想要的東西? –
這真的取決於,我不確定你的意思是有時想寫入一個輸出,有時想寫另一個輸出,你能提供更多的細節嗎? 如果您想要在同一個類的不同時間寫入控制檯或文件輸出,那麼您可以將其分成兩個界面,如果您有時想總是*寫入兩個輸出之一,那麼您可以有條件地註冊當你建立你的容器時的輸出 – ivanPfeff
我想我正在努力的是如何改變TodayWriter上的參數注入從文件到控制檯。我從來沒有直接調用控制檯輸出,但我通過TodayWriter調用它。 –