У меня есть класс, который опирается на HttpServerUtilityBase
. Я планировал получить карту структуры для использования HttpServerUtilityWrapper
в качестве экземпляра по умолчанию.Ничего странного там нет.Однако, как только я добавил объявления в свой реестр, Structuremap не может разрешить экземпляр, и я получаю ошибку 202.
Это мой реестр:
public class ApplicationRegistry : Registry
{
public ApplicationRegistry()
{
Scan(scanThe =>
{
scanThe.AssembliesFromApplicationBaseDirectory();
scanThe.WithDefaultConventions();
});
Scan(scanThe =>
{
scanThe.AssemblyContainingType<HttpServerUtilityBase>();
});
SetAllProperties(x =>
{
x.WithAnyTypeFromNamespaceContainingType<IFinancialYearRepository>();
x.WithAnyTypeFromNamespaceContainingType<IUserManagementFacade>();
x.WithAnyTypeFromNamespaceContainingType<IBulkTypeImporter>();
x.OfType<ILog>();
x.OfType<ISessionManager>();
});
For<IUnitOfWork>()
.HttpContextScoped()
.Use(() => new EFUnitOfWork(
ConfigurationManager.ConnectionStrings["PublishedEFSqlServer"].ConnectionString
)).Named("publishedUnitOfWork");
For<IUnitOfWork>()
.HttpContextScoped()
.Use(() => new EFUnitOfWork(
ConfigurationManager.ConnectionStrings["UnpublishedEFSqlServer"].ConnectionString
)).Named("unpublishedUnitOfWork");
For<ILog>()
.AlwaysUnique()
.Use(s =>
{
ILog loggger;
if (s.ParentType == null)
{
loggger = LogManager.GetLogger(s.BuildStack.Current.ConcreteType);
}
else
{
loggger = LogManager.GetLogger(s.ParentType);
}
if (HttpContext.Current.User != null && HttpContext.Current.User.Identity.IsAuthenticated)
{
ThreadContext.Properties["user"] = HttpContext.Current.User.Identity.Name;
}
return loggger;
});
For<ISessionManager>().Singleton();
For<HttpServerUtilityBase>()
.Singleton()
.Use<HttpServerUtilityWrapper>();
}
}
Все выглядитхорошо, но я явно чего-то не понимаю.Кроме того, строка из сгенерированного путем вызова WhatDoIHave()
, которая ссылается на HttpServerUtilityBase, похоже, имеет ссылку на HttpServerUtilityWrapper
, поэтому я предполагаю, что она должна просто работать.
HttpServerUtilityBase (System.Web.HttpServerUtilityBase) 3bf840df-e159-4dcf-93ef-211bb7484698 Сконфигурированный экземпляр System.Web.HttpServerUtilityWrapper, System.Web, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d506 * as
as5eed3505
Чего мне не хватает?