Я только что обновился до последней dll Structuremap, и теперь мой сайт больше не работает во время выполнения из-за устаревших методов в Structuremap, поэтому я пытаюсь обновить код загрузчика.
В моем классе начальной загрузки я переписал его на:
public class Bootstrapper
{
public static void ConfigureStructureMap()
{
ObjectFactory.Initialize(InitializeStructureMap);
}
private static void InitializeStructureMap(IInitializationExpression x)
{
x.AddRegistry(new DatabaseServiceRegistry());
x.For<IArticleService>().Use<ArticleService>();
x.For<IArticleRepository>().Use<SqlArticleRepository>();
}
}
Я добавил строку реестра, так как использую Linq to SQL, которая находится в отдельном проекте.
Это код, который работал в старой версии StructureMap:
public class DatabaseServiceRegistry : Registry
{
public override void ConfigureStructureMap()
{
ForRequestedType<Database>()
.TheDefaultIs(() => new Database(Settings.Default.server))
.CacheBy(InstanceScope.Hybrid);
}
Я думаю, мне нужно переписать что-то вроде этого?
public void ConfigureStructureMap()
{
ObjectFactory.Configure(x =>
{
For<Database>().Use(new Database(Settings.Default.server));
});
}
Это компилируется, но затем я получаю ошибку времени выполнения:
Код исключения StructureMap: 202
Экземпляр по умолчанию не определен для PluginFamily MyProject.Data.SqlRepository.Database
Что я делаю не так? Мне трудно найти документацию, которая относится к последнему синтаксису и не ссылается на устаревшие методы: (