iT邦幫忙

0

AutoFact問題請教

  • 分享至 

  • xImage

昨天我的問題暫時解了
但目前遇到一個新的問題好像是跟AutoFac有關
我執行後會跑出這樣的錯誤

 None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Service.UserService' can be invoked with the available services and parameters:

https://ithelp.ithome.com.tw/upload/images/20220426/201101320ysqp228aw.png

我雖然有查過但還是看不出個所以然,想請問這個問題該如何解呢?

這是我程式架構
https://ithelp.ithome.com.tw/upload/images/20220426/20110132D9g7QQI7CC.jpg

Startup

 public void ConfigureContainer(ContainerBuilder builder)
        {
           
            builder.RegisterModule(new AutofacModuleRegister());
        }

AutofacModuleRegister

public class AutofacModuleRegister : Autofac.Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            var BasePath = AppContext.BaseDirectory;
            var ServiceDll = Path.Combine(BasePath, "Service.dll");
            var RepositoryDll = Path.Combine(BasePath, "Repository.dll");

            var AssemblysServices = Assembly.LoadFrom(ServiceDll);
            builder.RegisterAssemblyTypes(AssemblysServices)
                   .AsImplementedInterfaces()
                   .InstancePerDependency();

            var AssemblysRepository = Assembly.LoadFrom(RepositoryDll);
            builder.RegisterAssemblyTypes(AssemblysRepository)
                       .AsImplementedInterfaces()
                       .InstancePerDependency();
        }
    }

我是採用Dll批量注入

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
w4560000
iT邦研究生 5 級 ‧ 2022-04-26 14:17:35
最佳解答

針對昨天你發問的問題,我發了兩個PR 解法,供你參考看看
https://github.com/Jarkwoof/BoardCore/pulls

Autofac的問題,是因為你的Repository是泛型要另外註冊,PR的Commit可以查看

builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IBaseRepository<>))
                .AsImplementedInterfaces()
                .InstancePerLifetimeScope();
tenno081 iT邦研究生 4 級 ‧ 2022-04-26 15:31:38 檢舉

你好,後來我的修改方式跟您的很接近,
後續的問題我處理好了,萬分感謝。

w4560000 iT邦研究生 5 級 ‧ 2022-04-26 22:44:08 檢舉

/images/emoticon/emoticon12.gif

我要發表回答

立即登入回答