From 21c46846fff34461dddab88129aba48b879a3db7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 17 Dec 2020 17:13:19 +0300 Subject: [PATCH] Added section: Creating a Simple Plug-In --- docs/en/PlugIn-Modules.md | 69 ++++++++++++++++++++- docs/en/images/simple-plug-in-dll-file.png | Bin 0 -> 35011 bytes docs/en/images/simple-plugin-library.png | Bin 0 -> 17231 bytes 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 docs/en/images/simple-plug-in-dll-file.png create mode 100644 docs/en/images/simple-plugin-library.png diff --git a/docs/en/PlugIn-Modules.md b/docs/en/PlugIn-Modules.md index 5df505ade0..5522aec05e 100644 --- a/docs/en/PlugIn-Modules.md +++ b/docs/en/PlugIn-Modules.md @@ -53,4 +53,71 @@ There are two more built-in Plug-In Source implementations: * `PlugInSources.AddFiles()` gets a list of assembly (typically `dll`) files. This is a shortcut of using `FilePlugInSource` class. * `PlugInSources.AddTypes()` gets a list of module class types. If you use this, you need to load the assemblies of the modules yourself, but it provides flexibility when needed. This is a shortcut of using `TypePlugInSource` class. -If you need, you can create your own `IPlugInSource` implementation and add to the `options.PlugInSources` just like the others. \ No newline at end of file +If you need, you can create your own `IPlugInSource` implementation and add to the `options.PlugInSources` just like the others. + +## Creating a Simple Plug-In + +Create a simple **Class Library Project** in a solution: + +![simple-plugin-library](images/simple-plugin-library.png) + +You can add ABP Framework packages you need to use in the module. At least, you should add the `Volo.Abp.Core` package to the project: + +```` +Install-Package Volo.Abp.Core +```` + +Every [module](Module-Development-Basics.md) must declare a class derived from the `AbpModule`. Here, a simple module class that resolves a service and initializes it on the application startup: + +````csharp +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.Modularity; + +namespace MyPlugIn +{ + public class MyPlungInModule : AbpModule + { + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var myService = context.ServiceProvider + .GetRequiredService(); + + myService.Initialize(); + } + } +} +```` + +`MyService` can be any class registered to [Dependency Injection](Dependency-Injection.md) system, as show below: + +````csharp +using Microsoft.Extensions.Logging; +using Volo.Abp.DependencyInjection; + +namespace MyPlugIn +{ + public class MyService : ITransientDependency + { + private readonly ILogger _logger; + + public MyService(ILogger logger) + { + _logger = logger; + } + + public void Initialize() + { + _logger.LogInformation("MyService has been initialized"); + } + } +} +```` + +Build the project, open the build folder, find the `MyPlugIn.dll`: + +![simple-plug-in-dll-file](images/simple-plug-in-dll-file.png) + +Copy `MyPlugIn.dll` into the plug-in folder (`D:\Temp\MyPlugIns` for this example). + +If you have configured the main application like described above (see Basic Usage section), you should see the `MyService has been initialized` log in the application startup. \ No newline at end of file diff --git a/docs/en/images/simple-plug-in-dll-file.png b/docs/en/images/simple-plug-in-dll-file.png new file mode 100644 index 0000000000000000000000000000000000000000..3155708d68e59ecfc8d2c954f9cb2c5360182766 GIT binary patch literal 35011 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 literal 0 HcmV?d00001 diff --git a/docs/en/images/simple-plugin-library.png b/docs/en/images/simple-plugin-library.png new file mode 100644 index 0000000000000000000000000000000000000000..9fefd57dda8c1cbfa2b597ef441e6ab966623a5a GIT binary patch literal 17231 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 literal 0 HcmV?d00001