91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET?Core?Zero模塊系統的示例分析

發布時間:2022-02-15 13:39:03 來源:億速云 閱讀:140 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“ASP.NET Core Zero模塊系統的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“ASP.NET Core Zero模塊系統的示例分析”這篇文章吧。

簡介

在ABP中, 模板的定義就是一個類, 只需要繼承 AbpModule, 該類可以通過nuget包搜索 ABP 安裝。

下面演示在應用程序或類庫中, 定義一個模塊:

 public class ApplicationModule : AbpModule
    {
        public override void Initialize()
        {
            IocManager.RegisterAssemblyByConvention(typeof(ApplicationModule).GetAssembly());
        }
    }

說明: 關于IocManager.RegisterAssemblyByConvention的作用, 則是將當前程序集模塊注冊到容器當中, 作為一個模塊, 常見的是暴露模塊對應的服務,
而其中所有的服務, 都是按照聲明周期而聲明, 例如: ITransientDependency ,ISingletonDependency。

下面展示了IocManager.RegisterAssemblyByConvention 執行的部分細節:

public void RegisterAssembly(IConventionalRegistrationContext context)
{
            //Transient
            context.IocManager.IocContainer.Register(
                Classes.FromAssembly(context.Assembly)
                    .IncludeNonPublicTypes()
                    .BasedOn<ITransientDependency>()
                    .If(type => !type.GetTypeInfo().IsGenericTypeDefinition)
                    .WithService.Self()
                    .WithService.DefaultInterfaces()
                    .LifestyleTransient()
                );

            //Singleton
            context.IocManager.IocContainer.Register(
                Classes.FromAssembly(context.Assembly)
                    .IncludeNonPublicTypes()
                    .BasedOn<ISingletonDependency>()
                    .If(type => !type.GetTypeInfo().IsGenericTypeDefinition)
                    .WithService.Self()
                    .WithService.DefaultInterfaces()
                    .LifestyleSingleton()
                );

            //...
}

常見的方法

在AbpModule中, 定義了幾組方法, 分別在應用程序模塊加載的前后進行, 如下:

        public virtual void Initialize();
        public virtual void PostInitialize();
        public virtual void PreInitialize();
        public virtual void Shutdown();
  • Initialize : 通常, 這里用于注冊程序集依賴選項

  • PostInitialize : 初始化最后調用

  • PreInitialize : 初始化之前調用

  • Shutdown : 當應用程序關閉時調用

模塊依賴

通常來講, 一個模塊往往依賴與一個或者多個模塊, 這里, 也涉及到了模塊的加載生命周期。
假設: 模塊A依賴于模塊B, 那么意味著模塊B會先于模塊A初始化。

關于模塊之間的依賴, 則可以通過特性的方式 DependsOn 為模塊顯示聲明, 如下所示:

[DependsOn(typeof(BModule))]
public class AModule : AbpModule
{
    public override void Initialize()
    {
        //...
    }
}

模塊加載

任何模塊都依賴于啟動模塊進行加載, 這很常見, 例如機箱中的各個模塊: 內存、硬盤、顯卡、電源。 都需要通電的過程, 讓他們進行整個啟動過程。
Abp 則依賴于 AbpBootstrapper 來進行調用初始化, 可以通過 Initialize 方法加載。

 public static class ApplicationBootstrapper
    {
        public static AbpBootstrapper AbpBootstrapper { get; private set; }

       public static void Init(){
         //...
         AbpBootstrapper.Initialize();
       }
    }

同樣, 模塊也可以讀取指定文件夾路徑的方式進行加載模塊, 如下所示:

services.AddAbp<MyStartupModule>(options =>
{
    options.PlugInSources.Add(new FolderPlugInSource(@"C:\MyPlugIns"));
});

or

services.AddAbp<MyStartupModule>(options =>
{
    options.PlugInSources.AddFolder(@"C:\MyPlugIns");
});

以上是“ASP.NET Core Zero模塊系統的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新密市| 屏东县| 金湖县| 远安县| 扎鲁特旗| 正阳县| 渑池县| 山阴县| 牙克石市| 安康市| 九江市| 克拉玛依市| 怀集县| 肃宁县| 霍山县| 望谟县| 平凉市| 根河市| 泰来县| 汝南县| 余庆县| 绥江县| 轮台县| 太保市| 门头沟区| 山西省| 元氏县| 保定市| 邯郸县| 广西| 赤水市| 乐山市| 蒙城县| 博客| 西充县| 广丰县| 锡林浩特市| 昌黎县| 宜都市| 剑川县| 呼伦贝尔市|