У меня есть простая базовая конфигурация для Autofac, которая использует файл конфигурации JSON:
var config = new ConfigurationBuilder();
config.AddJsonFile("autofac.json",false,true); //notice reloadOnChange
// Register the ConfigurationModule with Autofac.
var module = new ConfigurationModule(config.Build());
var builder = new ContainerBuilder();
builder.RegisterModule(module);
// Set the dependency resolver to be Autofac.
_container = builder.Build();
Вот JSON:
{
"defaultAssembly": "AutoFacConfigFile",
"components": [
{
"type": "AutoFacConfigFile.ConsoleOutput",
"services": [
{
"type": "AutoFacConfigFile.IOutput"
}
],
"instanceScope": "single-instance",
"injectProperties": true
}
]
}
ConsoleOutput
записывает точную строку ввода:
public class ConsoleOutput : IOutput
{
public void Write(string content)
{
Console.WriteLine(content);
}
}
Однако, ConsoleOutput2
записывает точную строку ввода + "222222222":
public class ConsoleOutput2 : IOutput
{
public void Write(string content)
{
Console.WriteLine(content+"22222222222");
}
}
Я хочу видеть, что если я изменю форму ConsoleOutput
на ConsoleOutput2
, тогда я увижу другой вывод во время выполнения, поэтому я создал цикл:
static void Main(string[] args)
{
AutofacExt.InitAutofac();
var writer = AutofacExt.GetFromFac<IOutput>();
Get(writer).Wait();
}
public static async Task Get(IOutput writer)
{
for (int i = 0; i < 100; i++)
{
await Task.Delay(1000);
writer.Write("s");
}
}
Однако, даже если я изменяю файл JSON, когда цикл работает, я не вижуновый ответ.Я вижу только старый ответ:
![enter image description here](https://media.giphy.com/media/fvq1gQkcVcdhvToD7o/giphy.gif)
Вопрос:
Почему меняется с ConsoleOutput
наConsoleOutput2
не отражает изменения?
Я ожидаю:
"s"
"s"
"s"
-- file changed and saved here --
"s2222222222"
"s2222222222"
"s2222222222"