diff --git a/api/CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf.html b/api/CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf.html new file mode 100644 index 0000000..d2ec70f --- /dev/null +++ b/api/CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf.html @@ -0,0 +1,208 @@ + + + + + + + + Method AddSubtypesOf + | CPlugin.Net + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +
+
Search Results for
+
+

+
+
    +
    +
    + + + +
    + + + + + + diff --git a/api/CPlugin.Net.CPluginServiceCollectionExtensions.html b/api/CPlugin.Net.CPluginServiceCollectionExtensions.html new file mode 100644 index 0000000..c69f576 --- /dev/null +++ b/api/CPlugin.Net.CPluginServiceCollectionExtensions.html @@ -0,0 +1,186 @@ + + + + + + + + Class CPluginServiceCollectionExtensions + | CPlugin.Net + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + +
    +
    Search Results for
    +
    +

    +
    +
      +
      +
      + + + +
      + + + + + + diff --git a/api/CPlugin.Net.TypeFinder.FindSubtypesOf.html b/api/CPlugin.Net.TypeFinder.FindSubtypesOf.html index b90e1f2..f94ca67 100644 --- a/api/CPlugin.Net.TypeFinder.FindSubtypesOf.html +++ b/api/CPlugin.Net.TypeFinder.FindSubtypesOf.html @@ -90,7 +90,7 @@

      Improve this Doc - View Source + View Source

      FindSubtypesOf<TSupertype>()

      @@ -143,22 +143,6 @@
      Type Parameters
      Remarks

      This method uses the PluginAttribute type to create an instance of the subtype, so plugins must use it.

      -
      Exceptions
      - - - - - - - - - - - - - -
      TypeCondition
      ArgumentNullException

      assemblies is null.

      -
      @@ -170,7 +154,7 @@
      Exceptions
      Improve this Doc
    • - View Source + View Source
    • diff --git a/api/CPlugin.Net.html b/api/CPlugin.Net.html index dab7280..4ea821b 100644 --- a/api/CPlugin.Net.html +++ b/api/CPlugin.Net.html @@ -95,6 +95,9 @@

      CPluginEnvCo

      CPluginJsonConfiguration

      Represents a configuration to get the plugin files from a json.

      +
      +

      CPluginServiceCollectionExtensions

      +

      Extension methods for adding services to an IServiceCollection.

      PluginAttribute

      This attribute is required so that the type finder can create the instance of the subtype that implements the contract.

      diff --git a/api/toc.html b/api/toc.html index 65d5113..45bf938 100644 --- a/api/toc.html +++ b/api/toc.html @@ -91,6 +91,23 @@ +
    • + + CPluginServiceCollectionExtensions + + +
    • PluginAttribute diff --git a/index.json b/index.json index 465c637..2e3a23b 100644 --- a/index.json +++ b/index.json @@ -44,10 +44,20 @@ "title": "Class CPluginJsonConfiguration | CPlugin.Net", "keywords": "Class CPluginJsonConfiguration Represents a configuration to get the plugin files from a json. Inheritance Object CPluginConfigurationBase CPluginJsonConfiguration Inherited Members CPluginConfigurationBase.GetPluginPath(String) Object.Equals(Object) Object.Equals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Object.ReferenceEquals(Object, Object) Object.ToString() Namespace : CPlugin.Net Assembly : CPlugin.Net.dll Syntax public class CPluginJsonConfiguration : CPluginConfigurationBase Remarks The section must be called Plugins and its value must be an array of strings. Example: { \"Plugins\": [ \"MyPlugin1.dll\", \"MyPlugin2.dll\" ] } Constructors Name Description CPluginJsonConfiguration(IConfiguration) Initializes a new instance of the CPluginJsonConfiguration class. Methods Name Description GetPluginFiles() Gets the full path to each plugin file from a configuration source." }, + "api/CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf.html": { + "href": "api/CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf.html", + "title": "Method AddSubtypesOf | CPlugin.Net", + "keywords": "Method AddSubtypesOf | Improve this Doc View Source AddSubtypesOf(IServiceCollection, ServiceLifetime) Adds the subtypes that implement the contract specified by TSupertype to the service collection, using the assemblies loaded by PluginLoader . Declaration public static IServiceCollection AddSubtypesOf(this IServiceCollection services, ServiceLifetime serviceLifetime) where TSupertype : class Parameters Type Name Description IServiceCollection services The IServiceCollection to add the service to. ServiceLifetime serviceLifetime Specifies the lifetime of the services to be added to the service collection. Returns Type Description IServiceCollection A reference to this instance after the operation has completed. Type Parameters Name Description TSupertype The type of contract (base type) shared between the host application and the plugins. Remarks This method uses the PluginAttribute type to add the implementations of the contract to the service collection, so plugins must use it." + }, + "api/CPlugin.Net.CPluginServiceCollectionExtensions.html": { + "href": "api/CPlugin.Net.CPluginServiceCollectionExtensions.html", + "title": "Class CPluginServiceCollectionExtensions | CPlugin.Net", + "keywords": "Class CPluginServiceCollectionExtensions Extension methods for adding services to an IServiceCollection . Inheritance Object CPluginServiceCollectionExtensions Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Object.ReferenceEquals(Object, Object) Object.ToString() Namespace : CPlugin.Net Assembly : CPlugin.Net.dll Syntax public static class CPluginServiceCollectionExtensions Methods Name Description AddSubtypesOf(IServiceCollection, ServiceLifetime) Adds the subtypes that implement the contract specified by TSupertype to the service collection, using the assemblies loaded by PluginLoader ." + }, "api/CPlugin.Net.html": { "href": "api/CPlugin.Net.html", "title": "Namespace CPlugin.Net | CPlugin.Net", - "keywords": "Namespace CPlugin.Net Classes CPluginConfigurationBase Represents a configuration source to obtain the plugin files. CPluginEnvConfiguration Represents a configuration to get the plugin files from an environment variable. CPluginJsonConfiguration Represents a configuration to get the plugin files from a json. PluginAttribute This attribute is required so that the type finder can create the instance of the subtype that implements the contract. PluginLoader Represents the loader of plug-in assemblies. TypeFinder Represents a type finder for plugins loaded by PluginLoader ." + "keywords": "Namespace CPlugin.Net Classes CPluginConfigurationBase Represents a configuration source to obtain the plugin files. CPluginEnvConfiguration Represents a configuration to get the plugin files from an environment variable. CPluginJsonConfiguration Represents a configuration to get the plugin files from a json. CPluginServiceCollectionExtensions Extension methods for adding services to an IServiceCollection . PluginAttribute This attribute is required so that the type finder can create the instance of the subtype that implements the contract. PluginLoader Represents the loader of plug-in assemblies. TypeFinder Represents a type finder for plugins loaded by PluginLoader ." }, "api/CPlugin.Net.PluginAttribute.-ctor.html": { "href": "api/CPlugin.Net.PluginAttribute.-ctor.html", @@ -82,7 +92,7 @@ "api/CPlugin.Net.TypeFinder.FindSubtypesOf.html": { "href": "api/CPlugin.Net.TypeFinder.FindSubtypesOf.html", "title": "Method FindSubtypesOf | CPlugin.Net", - "keywords": "Method FindSubtypesOf | Improve this Doc View Source FindSubtypesOf() Finds subtypes that implement the contract specified by TSupertype using the assemblies loaded by PluginLoader . Declaration public static IEnumerable FindSubtypesOf() where TSupertype : class Returns Type Description IEnumerable An instance of type IEnumerable that allows iterating over the instances that implement the contract specified by TSupertype . or Returns an empty enumerable if the TSupertype does not have any subtype, or if no assembly uses PluginAttribute . This method never returns null . Type Parameters Name Description TSupertype The type of contract (base type) shared between the host application and the plugins. Remarks This method uses the PluginAttribute type to create an instance of the subtype, so plugins must use it. Exceptions Type Condition ArgumentNullException assemblies is null ." + "keywords": "Method FindSubtypesOf | Improve this Doc View Source FindSubtypesOf() Finds subtypes that implement the contract specified by TSupertype using the assemblies loaded by PluginLoader . Declaration public static IEnumerable FindSubtypesOf() where TSupertype : class Returns Type Description IEnumerable An instance of type IEnumerable that allows iterating over the instances that implement the contract specified by TSupertype . or Returns an empty enumerable if the TSupertype does not have any subtype, or if no assembly uses PluginAttribute . This method never returns null . Type Parameters Name Description TSupertype The type of contract (base type) shared between the host application and the plugins. Remarks This method uses the PluginAttribute type to create an instance of the subtype, so plugins must use it." }, "api/CPlugin.Net.TypeFinder.html": { "href": "api/CPlugin.Net.TypeFinder.html", diff --git a/manifest.json b/manifest.json index 637e858..b9f5e99 100644 --- a/manifest.json +++ b/manifest.json @@ -17,8 +17,8 @@ "source_relative_path": "api/CPlugin.Net.CPluginConfigurationBase.yml", "output": { ".html": { - "relative_path": "api/CPlugin.Net.CPluginConfigurationBase.GetPluginPath.html", - "hash": "wbbMr3n2J2BbBBy4/xSZZRmS5DuHCm84/5hLUXRZZAI=" + "relative_path": "api/CPlugin.Net.CPluginConfigurationBase.GetPluginFiles.html", + "hash": "RcWgKm+A/nkAT7L2KI/eNm0ibocyNMYwgSZn49lbeaQ=" } }, "is_incremental": false, @@ -29,8 +29,8 @@ "source_relative_path": "api/CPlugin.Net.CPluginConfigurationBase.yml", "output": { ".html": { - "relative_path": "api/CPlugin.Net.CPluginConfigurationBase.GetPluginFiles.html", - "hash": "RcWgKm+A/nkAT7L2KI/eNm0ibocyNMYwgSZn49lbeaQ=" + "relative_path": "api/CPlugin.Net.CPluginConfigurationBase.GetPluginPath.html", + "hash": "wbbMr3n2J2BbBBy4/xSZZRmS5DuHCm84/5hLUXRZZAI=" } }, "is_incremental": false, @@ -65,8 +65,8 @@ "source_relative_path": "api/CPlugin.Net.CPluginEnvConfiguration.yml", "output": { ".html": { - "relative_path": "api/CPlugin.Net.CPluginEnvConfiguration.-ctor.html", - "hash": "t0DrfrBFMwjUgPmlG5jfcoa6B4YsLa/0zO0AiEFNbms=" + "relative_path": "api/CPlugin.Net.CPluginEnvConfiguration.GetPluginFiles.html", + "hash": "lJaMMbNPIRndcMOUl4jolK2nzd2sNrSuIqnMJxcciCM=" } }, "is_incremental": false, @@ -77,8 +77,8 @@ "source_relative_path": "api/CPlugin.Net.CPluginEnvConfiguration.yml", "output": { ".html": { - "relative_path": "api/CPlugin.Net.CPluginEnvConfiguration.GetPluginFiles.html", - "hash": "lJaMMbNPIRndcMOUl4jolK2nzd2sNrSuIqnMJxcciCM=" + "relative_path": "api/CPlugin.Net.CPluginEnvConfiguration.-ctor.html", + "hash": "t0DrfrBFMwjUgPmlG5jfcoa6B4YsLa/0zO0AiEFNbms=" } }, "is_incremental": false, @@ -89,8 +89,8 @@ "source_relative_path": "api/CPlugin.Net.CPluginJsonConfiguration.yml", "output": { ".html": { - "relative_path": "api/CPlugin.Net.CPluginJsonConfiguration.-ctor.html", - "hash": "s7qxkgzwX3oUSsypKhrV/MHgnYJEHUj2B2NSbcCcYGo=" + "relative_path": "api/CPlugin.Net.CPluginJsonConfiguration.GetPluginFiles.html", + "hash": "YxBXhddt7RfmqaJ/k3NeNMp8c2GSUiYp9z9bnoXMwhQ=" } }, "is_incremental": false, @@ -113,8 +113,8 @@ "source_relative_path": "api/CPlugin.Net.CPluginJsonConfiguration.yml", "output": { ".html": { - "relative_path": "api/CPlugin.Net.CPluginJsonConfiguration.GetPluginFiles.html", - "hash": "YxBXhddt7RfmqaJ/k3NeNMp8c2GSUiYp9z9bnoXMwhQ=" + "relative_path": "api/CPlugin.Net.CPluginJsonConfiguration.-ctor.html", + "hash": "s7qxkgzwX3oUSsypKhrV/MHgnYJEHUj2B2NSbcCcYGo=" } }, "is_incremental": false, @@ -122,11 +122,23 @@ }, { "type": "ManagedReference", - "source_relative_path": "api/CPlugin.Net.PluginAttribute.yml", + "source_relative_path": "api/CPlugin.Net.CPluginServiceCollectionExtensions.yml", "output": { ".html": { - "relative_path": "api/CPlugin.Net.PluginAttribute.PluginType.html", - "hash": "ZQFXWMYP42dmMQRvLtHzrMGLqOt1PeVfzh9610adJGA=" + "relative_path": "api/CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf.html", + "hash": "kSxB6oCdPnPbifLwYcYx34tTPZwcZdq5WBvTUvx03kY=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/CPlugin.Net.CPluginServiceCollectionExtensions.yml", + "output": { + ".html": { + "relative_path": "api/CPlugin.Net.CPluginServiceCollectionExtensions.html", + "hash": "gtpCc5cLLR68a47h8C3Luqc44LzfG9SId8dTfp8BAdY=" } }, "is_incremental": false, @@ -144,6 +156,18 @@ "is_incremental": false, "version": "" }, + { + "type": "ManagedReference", + "source_relative_path": "api/CPlugin.Net.PluginAttribute.yml", + "output": { + ".html": { + "relative_path": "api/CPlugin.Net.PluginAttribute.PluginType.html", + "hash": "ZQFXWMYP42dmMQRvLtHzrMGLqOt1PeVfzh9610adJGA=" + } + }, + "is_incremental": false, + "version": "" + }, { "type": "ManagedReference", "source_relative_path": "api/CPlugin.Net.PluginAttribute.yml", @@ -161,8 +185,8 @@ "source_relative_path": "api/CPlugin.Net.PluginLoader.yml", "output": { ".html": { - "relative_path": "api/CPlugin.Net.PluginLoader.Assemblies.html", - "hash": "QHkAlWiBHkHwY0itw+6hUxFVH02v7yDwqkAybq2Xtpg=" + "relative_path": "api/CPlugin.Net.PluginLoader.html", + "hash": "wi2AmLU+5Lb+mu/MwGWEHms6b+QDa7OAglVk5loivUY=" } }, "is_incremental": false, @@ -185,8 +209,8 @@ "source_relative_path": "api/CPlugin.Net.PluginLoader.yml", "output": { ".html": { - "relative_path": "api/CPlugin.Net.PluginLoader.html", - "hash": "wi2AmLU+5Lb+mu/MwGWEHms6b+QDa7OAglVk5loivUY=" + "relative_path": "api/CPlugin.Net.PluginLoader.Assemblies.html", + "hash": "QHkAlWiBHkHwY0itw+6hUxFVH02v7yDwqkAybq2Xtpg=" } }, "is_incremental": false, @@ -210,7 +234,7 @@ "output": { ".html": { "relative_path": "api/CPlugin.Net.TypeFinder.FindSubtypesOf.html", - "hash": "Fr7YNZRgALvvDNdZTjtd5E+u1RVP9fxrTd3pHbMzEg4=" + "hash": "KdVg2vb/AQ3/BWOPFtXpj4SBazzqw6gidd5W02Mv3bE=" } }, "is_incremental": false, @@ -222,7 +246,7 @@ "output": { ".html": { "relative_path": "api/CPlugin.Net.html", - "hash": "JEexfPc38YzosuPJWRe3G1SYHIa5BGWZPD7oqZASia0=" + "hash": "rgxxI18R1n9FuGeRk/AUMnL0wFbLb6MpXgfRIMHW3Fo=" } }, "is_incremental": false, @@ -234,7 +258,7 @@ "output": { ".html": { "relative_path": "api/toc.html", - "hash": "ays8bT4iFGp6Y98m7gDTpbyxhn1bdS/Rpcd2SChQZP4=" + "hash": "+X5zszHT3BZWpq6SjS1gJ/Co12MRttcjg8tRBVofb8U=" } }, "is_incremental": false, @@ -278,13 +302,13 @@ "can_incremental": true, "incrementalPhase": "build", "total_file_count": 1, - "skipped_file_count": 0 + "skipped_file_count": 1 }, "ManagedReferenceDocumentProcessor": { "can_incremental": true, "incrementalPhase": "build", - "total_file_count": 7, - "skipped_file_count": 7 + "total_file_count": 8, + "skipped_file_count": 5 }, "TocDocumentProcessor": { "can_incremental": false, diff --git a/xrefmap.yml b/xrefmap.yml index 7678dca..f41c1f4 100644 --- a/xrefmap.yml +++ b/xrefmap.yml @@ -97,6 +97,27 @@ references: commentId: Overload:CPlugin.Net.CPluginJsonConfiguration.GetPluginFiles fullName: CPlugin.Net.CPluginJsonConfiguration.GetPluginFiles nameWithType: CPluginJsonConfiguration.GetPluginFiles +- uid: CPlugin.Net.CPluginServiceCollectionExtensions + name: CPluginServiceCollectionExtensions + href: api/CPlugin.Net.CPluginServiceCollectionExtensions.html + commentId: T:CPlugin.Net.CPluginServiceCollectionExtensions + fullName: CPlugin.Net.CPluginServiceCollectionExtensions + nameWithType: CPluginServiceCollectionExtensions +- uid: CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf* + name: AddSubtypesOf + href: api/CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf.html + commentId: Overload:CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf + fullName: CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf + nameWithType: CPluginServiceCollectionExtensions.AddSubtypesOf +- uid: CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf``1(Microsoft.Extensions.DependencyInjection.IServiceCollection,Microsoft.Extensions.DependencyInjection.ServiceLifetime) + name: AddSubtypesOf(IServiceCollection, ServiceLifetime) + href: api/CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf.html#CPlugin_Net_CPluginServiceCollectionExtensions_AddSubtypesOf__1_Microsoft_Extensions_DependencyInjection_IServiceCollection_Microsoft_Extensions_DependencyInjection_ServiceLifetime_ + commentId: M:CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf``1(Microsoft.Extensions.DependencyInjection.IServiceCollection,Microsoft.Extensions.DependencyInjection.ServiceLifetime) + name.vb: AddSubtypesOf(Of TSupertype)(IServiceCollection, ServiceLifetime) + fullName: CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf(Microsoft.Extensions.DependencyInjection.IServiceCollection, Microsoft.Extensions.DependencyInjection.ServiceLifetime) + fullName.vb: CPlugin.Net.CPluginServiceCollectionExtensions.AddSubtypesOf(Of TSupertype)(Microsoft.Extensions.DependencyInjection.IServiceCollection, Microsoft.Extensions.DependencyInjection.ServiceLifetime) + nameWithType: CPluginServiceCollectionExtensions.AddSubtypesOf(IServiceCollection, ServiceLifetime) + nameWithType.vb: CPluginServiceCollectionExtensions.AddSubtypesOf(Of TSupertype)(IServiceCollection, ServiceLifetime) - uid: CPlugin.Net.PluginAttribute name: PluginAttribute href: api/CPlugin.Net.PluginAttribute.html