DevExpressのサンプルMVCWebサイトアプリケーションがあります。CastleWindsorをIOCとして使用します。Autofac経由で交換しようとしましたが、うまくいきませんでした。
サンプルコードは次のとおりです。
container
.Register(Component
.For<DbRepositories.ClinicalStudyContext>()
.LifestylePerWebRequest()
.DependsOn(new { connectionString }))
.Register(Component
.For<DbRepositories.IClinicalStudyContextFactory>()
.AsFactory())
.Register(Component
.For<FirstStartInitializer>()
.LifestyleTransient())
.Register(Component
.For<IUserRepository>()
.ImplementedBy<DbRepositories.UserRepository>())
これが私のAutofac変換です:
var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.Register(c =>
new DbRepositories.AdminContext(connectionString))
.InstancePerHttpRequest();
builder.RegisterType<DbRepositories.IAdminContextFactory>()
.As<DbRepositories.IAdminContextFactory>();
builder.RegisterType<DbRepositories.UserRepository>()
.As<IUserRepository>().InstancePerHttpRequest();
私の研究に関しては、AutofacにAsFactory()の実装はありません。
これはIAdminContextFactory
インターフェースです:
public interface IAdminContextFactory
{
AdminContext Retrieve();
}
これは、アプリケーションが言うエラーです。
タイプ'Admin.Infrastructure.EFRepository.IAdminContextFactory'のコンストラクターは、'パブリックバインディングフラグ'では見つかりません。
誰か助けてもらえますか?
ありがとう。